angular-cn/tools
JoostK 40039d8068 fix(ivy): narrow `NgIf` context variables in template type checker (#35125)
When the `NgIf` directive is used in a template, its context variables
can be used to capture the bound value. This is typically used together
with a pipe or function call, where the resulting value is captured in a
context variable. There's two syntax forms available:

1. Binding to `NgIfContext.ngIf` using the `as` syntax:
```html
<span *ngIf="(user$ | async) as user">{{user.name}}</span>
```

2. Binding to `NgIfContext.$implicit` using the `let` syntax:
```html
<span *ngIf="user$ | async; let user">{{user.name}}</span>
```

Because of the semantics of `ngIf`, it is known that the captured
context variable is non-nullable, however the template type checker
would not consider them as such and still report errors when
`strictNullTypes` is enabled.

This commit updates `NgIf`'s context guard to make the types of the
context variables non-nullable, avoiding the issue.

Fixes #34572

PR Close #35125
2020-02-28 07:39:57 -08:00
..
brotli-cli
browsers
build
circular_dependency_test
gulp-tasks
ng_rollup_bundle
ngcontainer
npm
npm_integration_test
public_api_guard
pullapprove
rxjs
saucelabs
size-tracking
source-map-test
symbol-extractor
testing
ts-api-guardian
tslint
utils
validate-commit-message
yarn
BUILD.bazel
bazel_stamp_vars.js
check-environment.js
defaults.bzl
jasmine-seed-generator.js
jsconfig.json
ng_benchmark.bzl
postinstall-patches.js
rebase-pr.js
tsconfig-test.json
tsconfig.json
types.d.ts
utils.inc