Deliver web apps with confidence 🚀
Find a file
JoostK 5de5b52beb fix(ivy): repeat template guards to narrow types in event handlers (#35193)
In Ivy's template type checker, event bindings are checked in a closure
to allow for accurate type inference of the `$event` parameter. Because
of the closure, any narrowing effects of template guards will no longer
be in effect when checking the event binding, as TypeScript assumes that
the guard outside of the closure may no longer be true once the closure
is invoked. For more information on TypeScript's Control Flow Analysis,
please refer to https://github.com/microsoft/TypeScript/issues/9998.

In Angular templates, it is known that an event binding can only be
executed when the view it occurs in is currently rendered, hence the
corresponding template guard is known to hold during the invocation of
an event handler closure. As such, it is desirable that any narrowing
effects from template guards are still in effect within the event
handler closure.

This commit tweaks the generated Type-Check Block (TCB) to repeat all
template guards within an event handler closure. This achieves the
narrowing effect of the guards even within the closure.

Fixes #35073

PR Close #35193
2020-02-07 13:06:00 -08:00
.circleci feat: add basic jest support (#35080) 2020-02-07 11:43:21 -08:00
.devcontainer build: update the recommended Dockerfile for VSCode remote development (#34697) 2020-01-09 13:31:14 -08:00
.github ci: Migrate from CODEOWNERS to PullApprove for PR review management (#34814) 2020-01-28 09:19:34 -08:00
.vscode build: migrate references and scripts that set to build with ivy via compile=aot to use config=ivy (#33983) 2019-11-26 16:38:40 -05:00
.yarn build: vendor yarn using the .yarnrc yarn-path value (#34902) 2020-01-23 11:41:23 -08:00
aio docs: fix awkard space due to margin in sections with alert class (#35113) 2020-02-07 11:36:58 -08:00
docs ci: minor PullApprove fixes/improvements (#35015) 2020-01-29 12:23:47 -08:00
integration fix(ngcc): correctly invalidate cache when moving/removing files/directories (#35106) 2020-02-03 14:25:47 -08:00
modules fix(benchpress): formatted spec files (#35127) 2020-02-04 10:41:06 -08:00
packages fix(ivy): repeat template guards to narrow types in event handlers (#35193) 2020-02-07 13:06:00 -08:00
scripts ci: remove components-repo-ci blocklist (#35115) 2020-02-06 15:32:33 -08:00
third_party ci: Remove old vendoring solution in favor of relying on yarn-path (#35083) 2020-02-06 15:30:51 -08:00
tools ci: ensure saucelabs browsers can load karma test page (#35171) 2020-02-06 15:36:27 -08:00
.bazelignore build: add integration/platform-server/node_modules to .bazelignore (#33765) 2019-11-22 16:52:08 -05:00
.bazelrc refactor: simplify bazel saucelabs targets using karma pre-test wrapper and shared saucelabs connection between tests (#34769) 2020-01-28 13:47:00 -08:00
.clang-format feat(tooling): Add a .clang-format for automated JavaScript formatting. 2015-04-02 08:44:34 -07:00
.editorconfig build: use https link to editorconfig.org in .editorconfig (#27664) 2018-12-18 09:30:09 -08:00
.gitattributes test: fix ts api guardian and public guard tests on windows (#30105) 2019-04-26 16:32:22 -07:00
.gitignore ci: do not run benchmark measurements in circleci (#34753) 2020-01-29 09:22:27 -08:00
.mailmap build: add a Git .mailmap with my new name (#19550) 2017-10-09 14:35:30 -07:00
.nvmrc build: migrate to node@12.14.1 (#34955) 2020-01-27 09:31:22 -08:00
.pullapprove.yml ci: remove components-repo-ci blocklist (#35115) 2020-02-06 15:32:33 -08:00
.yarnrc build: vendor yarn using the .yarnrc yarn-path value (#34902) 2020-01-23 11:41:23 -08:00
browser-providers.conf.js ci: re-enable android 7 saucelabs tests (#35171) 2020-02-06 15:36:27 -08:00
BUILD.bazel refactor: simplify bazel saucelabs targets using karma pre-test wrapper and shared saucelabs connection between tests (#34769) 2020-01-28 13:47:00 -08:00
CHANGELOG.md docs(changelog): formatting fix (#35224) 2020-02-07 09:59:35 -08:00
CODE_OF_CONDUCT.md docs: fix community tab in GitHub by copying CoC 2018-02-27 19:02:30 -08:00
CONTRIBUTING.md docs: document golden file requirement (#33900) 2020-01-07 10:58:53 -08:00
gulpfile.js build: create bazel marco to test for circular dependencies (#34774) 2020-01-23 11:36:40 -08:00
karma-js.conf.js ci: ensure saucelabs browsers can load karma test page (#35171) 2020-02-06 15:36:27 -08:00
LICENSE build: bump year (#34651) 2020-01-13 07:21:43 -08:00
package.json build: update @angular/cli to rc 14 (#35162) 2020-02-05 17:20:31 -08:00
protractor-perf.conf.js test: ensure global options for benchmark tests can be set in bazel (#34753) 2020-01-29 09:22:27 -08:00
README.md docs: fix typo of Typescript to TypeScript (#32153) 2019-08-15 12:44:41 -07:00
shims_for_IE.js Revert "refactor: add license header to JS files & format files (#12035)" 2016-10-04 14:06:41 -07:00
test-events.js refactor: rename unpatched event flag in Zone from BLACK_LISTED_EVENTS to UNPATCHED_EVENTS (#29617) 2019-10-04 08:44:58 -07:00
test-main.js feat(ivy): i18n - implement compile-time inlining (#32881) 2019-10-09 13:19:38 -07:00
tslint.json style: enforce disallowance of object constructor (#33211) 2019-12-03 10:08:25 -08:00
WORKSPACE ci: Remove old vendoring solution in favor of relying on yarn-path (#35083) 2020-02-06 15:30:51 -08:00
yarn.lock build: update @angular/cli to rc 14 (#35162) 2020-02-05 17:20:31 -08:00
yarn.lock.readme.md build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00

CircleCI BrowserStack Status Join the chat at https://gitter.im/angular/angular npm version

Angular

Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages.

Quickstart

Get started in 5 minutes.

Changelog

Learn about the latest improvements.

Want to help?

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.