angular-cn/packages
Alex Rickabaugh eb6975acaf fix(ivy): don't infer template context types when in full mode (#33537)
The Ivy template type-checker is capable of inferring the type of a
structural directive (such as NgForOf<T>). Previously, this was done with
fullTemplateTypeCheck: true, even if strictTemplates was false. View Engine
previously did not do this inference, and so this causes breakages if the
type of the template context is not what the user expected.

In particular, consider the template:

```html
<div *ngFor="let user of users as all">
  {{user.index}} out of {{all.length}}
</div>
```

As long as `users` is an array, this seems reasonable, because it appears
that `all` is an alias for the `users` array. However, this is misleading.

In reality, `NgForOf` is rendered with a template context that contains
both a `$implicit` value (for the loop variable `user`) as well as a
`ngForOf` value, which is the actual value assigned to `all`. The type of
`NgForOf`'s template context is `NgForContext<T>`, which declares `ngForOf`'s
type to be `NgIterable<T>`, which does not have a `length` property (due to
its incorporation of the `Iterable` type).

This commit stops the template type-checker from inferring template context
types unless strictTemplates is set (and strictInputTypes is not disabled).

Fixes #33527.

PR Close #33537
2019-11-20 11:47:42 -08:00
..
animations build: ts_web_test & ts_web_test_suite deprecated in favor of karma_web_test & karma_web_test_suite (#33802) 2019-11-13 13:33:38 -08:00
bazel fix(bazel): add terser as an optional peer dependency (#33891) 2019-11-18 16:01:33 -08:00
benchpress feat: update rxjs peerDependencies minimum requirment to 6.5.3 (#32812) 2019-10-01 14:56:45 -07:00
common docs(common): fix condition in transformed *ngIf (#33425) 2019-11-14 09:25:36 -08:00
compiler perf(ivy): chain styling instructions (#33837) 2019-11-19 11:44:29 -08:00
compiler-cli fix(ivy): don't infer template context types when in full mode (#33537) 2019-11-20 11:47:42 -08:00
core fix(core): make QueryList implement Iterable in the type system (#33536) 2019-11-19 13:43:53 -08:00
docs refactor(core): remove deprecated Renderer (#33019) 2019-10-08 09:23:00 -07:00
elements build: ts_web_test & ts_web_test_suite deprecated in favor of karma_web_test & karma_web_test_suite (#33802) 2019-11-13 13:33:38 -08:00
examples build: fixes for cross-platform RBE (#33708) 2019-11-15 10:49:55 -08:00
forms fix(ivy): shadow all DOM properties in `DebugElement.properties` (#33781) 2019-11-18 15:49:22 -08:00
http build: ts_web_test & ts_web_test_suite deprecated in favor of karma_web_test & karma_web_test_suite (#33802) 2019-11-13 13:33:38 -08:00
language-service feat(language-service): completions support for indexed types (#33775) 2019-11-15 16:16:06 -08:00
localize build: set up all packages to publish via wombot proxy (#33747) 2019-11-13 11:34:33 -08:00
platform-browser build: ts_web_test & ts_web_test_suite deprecated in favor of karma_web_test & karma_web_test_suite (#33802) 2019-11-13 13:33:38 -08:00
platform-browser-dynamic build: ts_web_test & ts_web_test_suite deprecated in favor of karma_web_test & karma_web_test_suite (#33802) 2019-11-13 13:33:38 -08:00
platform-server build: set up all packages to publish via wombot proxy (#33747) 2019-11-13 11:34:33 -08:00
platform-webworker docs(platform-webworker): mark all public APIs as deprecated (#33824) 2019-11-15 16:14:37 -08:00
platform-webworker-dynamic build: set up all packages to publish via wombot proxy (#33747) 2019-11-13 11:34:33 -08:00
private/testing test: cleanup `document` "after" each test (#33712) 2019-11-11 14:01:04 -08:00
router Revert "fix(router): make routerLinkActive work with query params which contain arrays (#22666)" (#33861) 2019-11-15 13:14:43 -08:00
service-worker build: ts_web_test & ts_web_test_suite deprecated in favor of karma_web_test & karma_web_test_suite (#33802) 2019-11-13 13:33:38 -08:00
upgrade build: ts_web_test & ts_web_test_suite deprecated in favor of karma_web_test & karma_web_test_suite (#33802) 2019-11-13 13:33:38 -08:00
zone.js fix: fixes typo of zone.js patch vrdisplaydisconnected property (#33581) 2019-11-18 15:46:52 -08:00
BUILD.bazel build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
README.md Revert "docs: Remove unneeded file (#18106)" 2017-07-20 16:46:47 -05:00
empty.ts refactor: move angular source to /packages rather than modules/@angular 2017-03-08 16:29:27 -08:00
goog.d.ts fix(ivy): use goog.LOCALE for Closure Compiler to define default LOCALE_ID (#31519) 2019-07-16 13:02:10 -04:00
license-banner.txt build: bump year (#27880) 2019-01-11 11:15:59 -08:00
system.d.ts refactor: move angular source to /packages rather than modules/@angular 2017-03-08 16:29:27 -08:00
tsconfig-build-no-strict.json refactor(core): ensure compatibility with typescript strict flag (#30993) 2019-07-18 14:21:25 -07:00
tsconfig-build.json refactor(core): ensure compatibility with typescript strict flag (#30993) 2019-07-18 14:21:25 -07:00
tsconfig-test.json refactor: fix typescript strict flag failures in all tests (#30993) 2019-07-18 14:21:26 -07:00
tsconfig.json build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
types.d.ts build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00: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