bb290cefae
Originally, QueryList implemented Iterable and provided a Symbol.iterator on its prototype. This caused issues with tree-shaking, so QueryList was refactored and the Symbol.iterator added in its constructor instead. As part of this change, QueryList no longer implemented Iterable directly. Unfortunately, this meant that QueryList was no longer assignable to Iterable or, consequently, NgIterable. NgIterable is used for NgFor's input, so this meant that QueryList was not usable (in a type sense) for NgFor iteration. View Engine's template type checking would not catch this, but Ivy's did. As a fix, this commit adds the declaration (but not the implementation) of the Symbol.iterator function back to QueryList. This has no runtime effect, so it doesn't affect tree-shaking of QueryList, but it ensures that QueryList is assignable to NgIterable and thus usable with NgFor. Fixes #29842 PR Close #33536 |
||
---|---|---|
.. | ||
BUILD.bazel | ||
README.md | ||
index.ts | ||
package.json |
README.md
fake_core
is a library designed to expose some of the same symbols as @angular/core
, without
requiring compilation of the whole of @angular/core
. This enables unit tests for the compiler to
be written without incurring long rebuilds for every change.
@angular/core
is compiled with@angular/compiler-cli
, and therefore has an implicit dependency on it. Therefore core must be rebuilt if the compiler changes.- Tests for the compiler which intend to build code that depends on
@angular/core
must have a data dependency on@angular/core
. Therefore core must be built to run the compiler tests, and thus rebuilt if the compiler changes.
This rebuild cycle is expensive and slow. fake_core
avoids this by exposing a subset of the
@angular/core
API, which enables applications to be built by the ngtsc compiler without
needing a full version of core present at compile time.