angular-docs-cn/packages
Alex Rickabaugh bea85ffe9c fix(ivy): match microsyntax template directives correctly (#29698)
Previously, Template.templateAttrs was introduced to capture attribute
bindings which originated from microsyntax (e.g. bindings in *ngFor="...").
This means that a Template node can have two different structures, depending
on whether it originated from microsyntax or from a literal <ng-template>.

In the literal case, the node behaves much like an Element node, it has
attributes, inputs, and outputs which determine which directives apply.
In the microsyntax case, though, only the templateAttrs should be used
to determine which directives apply.

Previously, both the t2_binder and the TemplateDefinitionBuilder were using
the wrong set of attributes to match directives - combining the attributes,
inputs, outputs, and templateAttrs of the Template node regardless of its
origin. In the TDB's case this wasn't a problem, since the TDB collects a
global Set of directives used in the template, so it didn't matter whether
the directive was also recognized on the <ng-template>. t2_binder's API
distinguishes between directives on specific nodes, though, so it's more
sensitive to mismatching.

In particular, this showed up as an assertion failure in template type-
checking in certain cases, when a directive was accidentally matched on
a microsyntax template element and also had a binding which referenced a
variable declared in the microsyntax. This resulted in the type-checker
attempting to generate a reference to a variable that didn't exist in that
scope.

The fix is to distinguish between the two cases and select the appropriate
set of attributes to match on accordingly.

Testing strategy: tested in the t2_binder tests.

PR Close #29698
2019-04-19 11:15:25 -07:00
..
animations docs(animations): fixed some closing brackets on query animation page (#29854) (#29855) 2019-04-18 18:19:48 -07:00
bazel fix(bazel): do not typecheck core schematic files (#29876) 2019-04-18 18:22:09 -07:00
benchpress docs: cleanup contributors (#28930) 2019-03-06 14:48:30 -08:00
common Revert "feat(ivy): use i18n locale data to determine the plural form of ICU expressions (#29249)" (#29918) 2019-04-15 16:55:51 -07:00
compiler fix(ivy): match microsyntax template directives correctly (#29698) 2019-04-19 11:15:25 -07:00
compiler-cli fix(ivy): match microsyntax template directives correctly (#29698) 2019-04-19 11:15:25 -07:00
core feat(ivy): register NgModules with ids when compiled with AOT (#29980) 2019-04-19 11:12:21 -07:00
docs
elements build: remove now redundant `bundle_dts = True` attribute (#29128) 2019-03-07 10:47:20 -08:00
examples docs(core): update API doc examples to use static injector (#29729) 2019-04-08 17:20:34 -07:00
forms docs(forms): fix small typo in forms documentation (#29370) 2019-03-19 13:11:11 -04:00
http build: hide @angular/http for Angular v8 (#29550) 2019-04-02 10:55:31 -07:00
language-service fix(language-service): Use proper types instead of any (#29942) 2019-04-17 12:17:13 -07:00
platform-browser fix(ivy): allow TestBed.createComponent to create components in isolation (#29981) 2019-04-19 09:45:52 -07:00
platform-browser-dynamic refactor(ivy): prefix all generated instructions (#29692) 2019-04-10 12:11:40 -07:00
platform-server feat: remove @angular/http dependency from @angular/platform-server (#29408) 2019-03-27 12:38:29 -07:00
platform-webworker fix(ivy): TestBed rewrite to avoid unnecessary recompilations (#29483) 2019-03-27 09:41:58 -07:00
platform-webworker-dynamic build: remove now redundant `bundle_dts = True` attribute (#29128) 2019-03-07 10:47:20 -08:00
private/testing feat(ivy): support i18n without closure (#28689) 2019-04-11 08:28:45 -07:00
router docs: update extra options available for RouterModule.forRoot() method (#29846) 2019-04-17 17:25:31 -07:00
service-worker refactor(service-worker): use `Adapter#parseUrl()` for all URL parsing (#27080) 2019-03-21 12:07:56 -04:00
upgrade refactor(upgrade): use Bazel packages to avoid symlinks in the source (#29466) 2019-04-02 10:38:01 -07:00
BUILD.bazel build: rules_nodejs 0.26.0 & use @npm instead of @ngdeps now that downstream angular build uses angular bundles (#28871) 2019-02-28 12:06:36 -08:00
README.md Revert "docs: Remove unneeded file (#18106)" 2017-07-20 16:46:47 -05:00
empty.ts
goog.d.ts test(ivy): add bundling test `todo_i18n` (#27420) 2018-12-04 19:59:12 -08:00
license-banner.txt build: bump year (#27880) 2019-01-11 11:15:59 -08:00
system.d.ts
tsconfig-build.json build: update to rules_typescript 0.25.1 (#28625) 2019-02-21 07:46:21 -08:00
tsconfig-test.json build: update to rules_typescript 0.25.1 (#28625) 2019-02-21 07:46:21 -08:00
tsconfig.json ci: saucelabs-legacy job should not run schematic core tests (#29124) 2019-03-05 16:10:08 -08:00
types.d.ts build: switch to typescript's es2015 typings (#28570) 2019-02-06 14:17:55 -05:00

README.md

Angular

The sources for this package are in the main Angular repo. Please file issues and pull requests against that repo.

License: MIT