Adds `TemplateTypeChecker` operation to retrieve the `Symbol` of a `TmplAstVariable` or `TmplAstReference` in a template. Sometimes we need to traverse an intermediate variable declaration to arrive at the correct `ts.Symbol`. For example, loop variables are declared using an intermediate: ``` <div *ngFor="let user of users"> {{user.name}} </div> ``` Getting the symbol of user here (from the expression) is tricky, because the TCB looks like: ``` var _t0 = ...; // type of NgForOf var _t1: any; // context of embedded view for NgForOf structural directive if (NgForOf.ngTemplateContextGuard(_t0, _t1)) { // _t1 is now NgForOfContext<...> var _t2 = _t1.$implicit; // let user = '$implicit' _t2.name; // user.name expression } ``` Just getting the `ts.Expression` for the `AST` node `PropRead(ImplicitReceiver, 'user')` via the sourcemaps will yield the `_t2` expression. This function recognizes that `_t2` is a variable declared locally in the TCB, and actually fetch the `ts.Symbol` of its initializer. These special handlings show the versatility of the `Symbol` interface defined in the API. With this, when we encounter a template variable, we can provide the declaration node, as well as specific information about the variable instance, such as the `ts.Type` and `ts.Symbol`. PR Close #38618
Angular
The sources for this package are in the main Angular repo. Please file issues and pull requests against that repo.
Usage information and reference details can be found in Angular documentation.
License: MIT