@ContentChild[ren] and @ViewChild[ren] can contain a forwardRef() to a type. This commit allows ngtsc to unwrap the forward reference and deal with the node inside. It includes two modes of support for forward reference resolution - a foreign function resolver which understands deeply nested forward references in expressions that are being statically evaluated, and an unwrapForwardRef() function which deals only with top-level nodes. Both will be useful in the future, but for now only unwrapForwardRef() is used. PR Close #25080
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/coreis 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/coremust 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.