En

Angular官网安全更新(2021-11-03)

来源:Angular官网 发布日期:2021-11-03 阅读次数:11467 评论:0

基本信息

发布日期:2021-11-03(官方当地时间)

更新类型:安全更新

更新版本:13.0.0

感知时间:2021-11-04 04:11:06

风险等级:未知

情报贡献:TSRC

更新标题

安全更新

更新详情

<a name="13.0.0"></a>
# 13.0.0 (2021-11-03)
## Breaking Changes
### common
- The behavior of the `SpyLocation` used by the `RouterTestingModule` has changed
to match the behavior of browsers. It no longer emits a 'popstate' event
when `Location.go` is called. In addition, `simulateHashChange` now
triggers _both_ a `hashchange` and a `popstate` event.
Tests which use `location.go` and expect the changes to be picked up by
the `Router` should likely change to `simulateHashChange` instead.
Each test is different in what it attempts to assert so there is no
single change that works for all tests. Each test using the `SpyLocation` to
simulate browser URL changes should be evaluated on a case-by-case basis.
### core
- TypeScript versions older than 4.4.2 are no longer supported.

- NodeJS versions older than `v12.20.0` are no longer
supported due to the Angular packages using the NodeJS package exports
feature with subpath patterns.

- The `WrappedValue` class can no longer be imported from `@angular/core`,
which may result in compile errors or failures at runtime if outdated
libraries are used that are still using `WrappedValue`. The usage of
`WrappedValue` should be removed as no replacement is available.
### forms
- A new type called `FormControlStatus` has been introduced, which is a union of all possible status strings for form controls. `AbstractControl.status` has been narrowed from `string` to `FormControlStatus`, and `statusChanges` has been narrowed from `Observable<any>` to `Observable<FormControlStatus>`. Most applications should consume the new types seamlessly. Any breakage caused by this change is likely due to one of the following two problems: (1) the app is comparing `AbstractControl.status` against a string which is not a valid status; or, (2) the app is using `statusChanges` events as if they were something other than strings.
### router
- The default url serializer would previously drop
everything after and including a question mark in query parameters. That
is, for a navigation to `/path?q=hello?&other=123`, the query
params would be parsed to just `{q: 'hello'}`. This is
incorrect because the URI spec allows for question mark characers in
query data. This change will now correctly parse the params for the
above example to be `{v: 'hello?', other: '123'}`.

- Previously `null` and `undefined` inputs for `routerLink` were
equaivalent to empty string and there was no way to disable the link's
navigation.
In addition, the `href` is changed from a property `HostBinding()` to an
attribute binding (`HostBinding('attr.href')`). The effect of this
change is that `DebugElement.properties['href']` will now return the
`href` value returned by the native element which will be the full URL
rather than the internal value of the `RouterLink` `href` property.

- The router will no longer replace the browser URL when a new navigation
cancels an ongoing navigation. This often causes URL flicker and was
only in place to support some AngularJS hybrid applications. Hybrid
applications which rely on the `navigationId` being present on initial
navigations that were handled by the Angular router should instead
subscribe to `NavigationCancel` events and perform the
`location.replaceState` themselves to add `navigationId` to the Router
state.
In addition, tests which assert `urlChanges` on the `SpyLocation` may
need to be adjusted to account for the `replaceState` which is no longer
triggered.

- It is no longer possible to use `Route.loadChildren` using a string
value. The following supporting classes were removed from
`@angular/core`:

- `NgModuleFactoryLoader`
- `SystemJsNgModuleFactoryLoader`

The `@angular/router` package no longer exports these symbols:

- `SpyNgModuleFactoryLoader`
- `DeprecatedLoadChildren`

The signature of the `setupTestingRouter` function from
`@angular/core/testing` has been changed to drop its `NgModuleFactoryLoader`
parameter, as an argument for that parameter can no longer be created.
### service-worker
- The return type of `SwUpdate#activateUpdate` and `SwUpdate#checkForUpdate` changed to `Promise<boolean>`.

Although unlikely, it is possible that this change will cause TypeScript type-checking to fail in
some cases. If necessary, update your types to account for the new
return type.
## Deprecations
###
- The `renderModuleFactory` symbol in `@angular/platform-server` is no longer necessary as of Angular v13.

The `renderModuleFactory` calls can be replaced with `renderModule`.
### service-worker
- The `SwUpdate#activated` observable is deprecated.

The `SwUpdate#activated` observable only emits values as a direct response to calling
`SwUpdate#activateUpdate()` and was only useful for determining whether the call resulted in an
update or not. Now, the return value of `SwUpdate#activateUpdate()` can be used to determine the
outcome of the operation and therefore using `SwUpdate#activated` does not offer any benefit.

- The `SwUpdate#availalbe` observable is deprecated.

The new `SwUpdate#versionUpdates` observable provides the same information and more. Therefore, it
is possible to rebuild the same behavior as `SwUpdate#availalbe` using the events emitted by
`SwUpdate#versionUpdates` and filtering for `VersionReadyEvent` events.
As a result, the `SwUpdate#availalbe` observable is now redundant.
###
| Commit | Description |
| -- | -- |
| [![docs - 747553dd68](https://img.shields.io/badge/747553dd68-docs-yellow)](https://github.com/angular/angular/commit/747553dd68209fe25a9704fe7094b4b3fb38bf06) | deprecate ViewEngine-based `renderModuleFactory` (#43757) |
### bazel
| Commit | Description |
| -- | -- |
| [![feat - 62d7005a52](https://img.shields.io/badge/62d7005a52-feat-blue)](https://github.com/angular/angular/commit/62d7005a52304f41a48f878f176f40e90437a555) | add `strict_templates` and `experimental_extended_template_diagnostics` to `ng_module()` rule (#43582) |
| [![feat - d977701a43](https://img.shields.io/badge/d977701a43-feat-blue)](https://github.com/angular/angular/commit/d977701a43866e9f9fae9f83f224e4b6980a8bd4) | allow for custom conditions to be set in `ng_package` targets (#43764) |
| [![feat - 4886585875](https://img.shields.io/badge/4886585875-feat-blue)](https://github.com/angular/angular/commit/48865858750bc1607f20db9b6bf9f913870742bc) | create transition for enabling partial compilation (#43431) |
| [![feat - cd1b52483e](https://img.shields.io/badge/cd1b52483e-feat-blue)](https://github.com/angular/angular/commit/cd1b52483e886f6e2ad6cde23ff8a2225cafa219) | expose `esm2020` and `es2020` conditions in APF package exports (#43740) |
| [![feat - 49b82ae561](https://img.shields.io/badge/49b82ae561-feat-blue)](https://github.com/angular/angular/commit/49b82ae56112c1e0d58ac28bcab1705e1f678ab1) | implement partial compilation APF v13 for `ng_package` rule (#43431) |
| [![feat - 274cb38e0b](https://img.shields.io/badge/274cb38e0b-feat-blue)](https://github.com/angular/angular/commit/274cb38e0bb9a8bff4a48d1d15f4e16e59ec6f88) | switch prodmode output to ES2020 (#43431) |
| [![feat - 73ac50c447](https://img.shields.io/badge/73ac50c447-feat-blue)](https://github.com/angular/angular/commit/73ac50c44759c5d3048f11d6f98b98a5e625df58) | wire up partial compilation build setting in `ng_module` (#43431) |
| [![fix - e0a72857cc](https://img.shields.io/badge/e0a72857cc-fix-green)](https://github.com/angular/angular/commit/e0a72857ccda2b21a91875ee714fef608b54c083) | construct a manifest file even when warnings are emitted (#43582) |
| [![fix - dbe656d1e0](https://img.shields.io/badge/dbe656d1e0-fix-green)](https://github.com/angular/angular/commit/dbe656d1e0569304c7001296ec90cf2e9cc8c91f) | ngc-wrapped should not rely on linker for external workspaces (#43690) |
### common
| Commit | Description |
| -- | -- |
| [![feat - adf4481211](https://img.shields.io/badge/adf4481211-feat-blue)](https://github.com/angular/angular/commit/adf4481211ac0a2eabf560f42ef5193ca550ec98) | add injection token for default date pipe timezone (#43611) |
| [![fix - c6a93001eb](https://img.shields.io/badge/c6a93001eb-fix-green)](https://github.com/angular/angular/commit/c6a93001eb74374b0fbc6aea1286fe1183d21382) | synchronise location mock behavior with the navigators (#41730) |
### compiler
| Commit | Description |
| -- | -- |
| [![fix - 14b492df26](https://img.shields.io/badge/14b492df26-fix-green)](https://github.com/angular/angular/commit/14b492df26fcb3f2218f67878a382e8f7dff2c05) | do not error if $any is used inside a listener (#43866) |
### compiler-cli
| Commit | Description |
| -- | -- |
| [![feat - bed121c34f](https://img.shields.io/badge/bed121c34f-feat-blue)](https://github.com/angular/angular/commit/bed121c34f9c4ec4741a4690693423bb7ed66982) | inline resources when generating class metadata calls (#43178) |
| [![fix - 263feba5c2](https://img.shields.io/badge/263feba5c2-fix-green)](https://github.com/angular/angular/commit/263feba5c2d56e8433068718d1fdcbc3b2ae144c) | handle nullable expressions correctly in the nullish coalescing extended template diagnostic (#43572) |
| [![fix - 8f7fdc59af](https://img.shields.io/badge/8f7fdc59af-fix-green)](https://github.com/angular/angular/commit/8f7fdc59af7f1b0a51b07e69044368c223b9f186) | not evaluating new signature for __spreadArray (#43618) |
| [![fix - 426a3ecae7](https://img.shields.io/badge/426a3ecae7-fix-green)](https://github.com/angular/angular/commit/426a3ecae7288c2cb3e8928d7fe56b0b4552d821) | updates `ngc` to pass the build when only warnings are emitted (#43673) |
### core
| Commit | Description |
| -- | -- |
| [![feat - a3960846da](https://img.shields.io/badge/a3960846da-feat-blue)](https://github.com/angular/angular/commit/a3960846da1f73282306560302daa3a4ddeca0f7) | add `createNgModuleRef` function to create `NgModuleRef` based on NgModule class (#43580) |
| [![feat - fe1f6421d2](https://img.shields.io/badge/fe1f6421d2-feat-blue)](https://github.com/angular/angular/commit/fe1f6421d2b647adb706e65f69ec2e40e604fac3) | add `getNgModuleById` function to retrieve loaded NgModules by id (#43580) |
| [![feat - 81c7eb813c](https://img.shields.io/badge/81c7eb813c-feat-blue)](https://github.com/angular/angular/commit/81c7eb813c27f08d2d640f34e165a1b5e487bac2) | add migration to opt out existing apps from new test module teardown behavior (#43353) |
| [![feat - e57691c9c5](https://img.shields.io/badge/e57691c9c5-feat-blue)](https://github.com/angular/angular/commit/e57691c9c5f8456f7dc75180aa1e80330da560fe) | Add migration to update empty routerLinks in templates (#43176) |
| [![feat - 7dccbdd27b](https://img.shields.io/badge/7dccbdd27b-feat-blue)](https://github.com/angular/angular/commit/7dccbdd27be13eb7287f535f482b1de2c13fca74) | add support for Types in ViewContainerRef.createComponent (#43022) |
| [![feat - c14085e434](https://img.shields.io/badge/c14085e434-feat-blue)](https://github.com/angular/angular/commit/c14085e43493f0a1eaea1df949cbf6f3b13b72a0) | drop support for TypeScript 4.2 and 4.3 (#43642) |
| [![feat - 94ba59bc9d](https://img.shields.io/badge/94ba59bc9d-feat-blue)](https://github.com/angular/angular/commit/94ba59bc9db81ae04f20e8147b5133a0d3d45510) | enable test module teardown by default (#43353) |
| [![feat - ea61ec2562](https://img.shields.io/badge/ea61ec2562-feat-blue)](https://github.com/angular/angular/commit/ea61ec25628206d18a424906f685c0d0fd6aa714) | support TypeScript 4.4 (#43281) |
| [![feat - e0a0d05d45](https://img.shields.io/badge/e0a0d05d45-feat-blue)](https://github.com/angular/angular/commit/e0a0d05d45bcb93448a8c2fd03f9e1783146cf00) | update node version support range to support v16 (#43740) |
| [![fix - 7396021e4b](https://img.shields.io/badge/7396021e4b-fix-green)](https://github.com/angular/angular/commit/7396021e4b22faca47b7fc0bab188c838090f3e7) | avoid duplicating comments in TestBed teardown migration (#43776) |
| [![fix - 7fd0428aae](https://img.shields.io/badge/7fd0428aae-fix-green)](https://github.com/angular/angular/commit/7fd0428aae3a7d94bfc8fee764ac24f5fe3fbb41) | don't rethrow errors if test teardown has been disabled (#43635) |
| [![fix - 66fb311d20](https://img.shields.io/badge/66fb311d20-fix-green)](https://github.com/angular/angular/commit/66fb311d205e51647e2c1f84a6e3adf5ef3cfd64) | incorrect signature for initTestEnvironment (#43615) |
| [![fix - 8ae99821d6](https://img.shields.io/badge/8ae99821d6-fix-green)](https://github.com/angular/angular/commit/8ae99821d657ba940df998f6abec425f8a1f4cb1) | support `InjectFlags` argument in `NodeInjector.get()` (#41592) |
| [![perf - 8878183521](https://img.shields.io/badge/8878183521-perf-orange)](https://github.com/angular/angular/commit/88781835212354d7058a3674a04c2a1dd4b8f9c3) | remove support for the deprecated `WrappedValue` (#43507) |
### elements
| Commit | Description |
| -- | -- |
| [![fix - a468213f34](https://img.shields.io/badge/a468213f34-fix-green)](https://github.com/angular/angular/commit/a468213f34943b7ddf234e6f9fd406431173d6a0) | remove `ng-add` schematic (#43975) |
| [![fix - f544a53f5f](https://img.shields.io/badge/f544a53f5f-fix-green)](https://github.com/angular/angular/commit/f544a53f5f3667b4c557537543a9b74a122d5f24) | remove incorrect `@angular/platform-browser` peer dependency (#43975) |
### forms
| Commit | Description |
| -- | -- |
| [![feat - d9d8f950e9](https://img.shields.io/badge/d9d8f950e9-feat-blue)](https://github.com/angular/angular/commit/d9d8f950e90567c79b43eb156b81810a9f3d5c93) | allow disabling min/max validators dynamically (by setting the value to `null`) (#42978) |
| [![feat - e49fc96ed3](https://img.shields.io/badge/e49fc96ed3-feat-blue)](https://github.com/angular/angular/commit/e49fc96ed33c26434a14b80487dd912d8c76cace) | Make Form Statuses use stricter types. (#42952) |
### language-service
| Commit | Description |
| -- | -- |
| [![feat - b10d90bef6](https://img.shields.io/badge/b10d90bef6-feat-blue)](https://github.com/angular/angular/commit/b10d90bef6a3d1b721d087268aa7377985dd4c4f) | Add method for retrieving the component template at the cursor location (#43208) |
| [![feat - d5f9890c92](https://img.shields.io/badge/d5f9890c92-feat-blue)](https://github.com/angular/angular/commit/d5f9890c9205b4a121275ace84b26776aedd0478) | auto-apply optional chaining on nullable symbol (#42995) |
| [![feat - 69957f72e2](https://img.shields.io/badge/69957f72e2-feat-blue)](https://github.com/angular/angular/commit/69957f72e240e516fe65146c314014fadc43dd1f) | provide snippets for attribute (#43590) |
| [![fix - fc3b50e427](https://img.shields.io/badge/fc3b50e427-fix-green)](https://github.com/angular/angular/commit/fc3b50e4275c84a1cd3f75e4b52ee2dc4b65c35c) | exclude the `SafePropertyRead` when applying the optional chaining (#43321) |
### migrations
| Commit | Description |
| -- | -- |
| [![fix - 95a68c5dc3](https://img.shields.io/badge/95a68c5dc3-fix-green)](https://github.com/angular/angular/commit/95a68c5dc3b72c0fe275e5025445befec3d9dc1e) | account for CRLF characters in template migrations (#44013) |
| [![fix - 77bd2538cb](https://img.shields.io/badge/77bd2538cb-fix-green)](https://github.com/angular/angular/commit/77bd2538cb8fe114a326209791d7ec043d65ea9e) | apply individual expression edits to preserve newline characters (#43519) |
| [![fix - d849350c7b](https://img.shields.io/badge/d849350c7b-fix-green)](https://github.com/angular/angular/commit/d849350c7bf19117bbf85e2d854b5be4d5eb4b25) | Ensure routerLink migration doesn't update unrelated files (#43519) |
| [![fix - 2efc18e675](https://img.shields.io/badge/2efc18e675-fix-green)](https://github.com/angular/angular/commit/2efc18e6757157589004e23d8d22b7967de4387d) | migration failed finding tsconfig file (#43343) |
| [![fix - b6f2a55147](https://img.shields.io/badge/b6f2a55147-fix-green)](https://github.com/angular/angular/commit/b6f2a551475126893c4ceff1241314067e14d0b6) | prevent migrations from updating external templates multiple times (#44013) |
### router
| Commit | Description |
| -- | -- |
| [![feat - 4f3beffdbf](https://img.shields.io/badge/4f3beffdbf-feat-blue)](https://github.com/angular/angular/commit/4f3beffdbfa974b380b2225f163d363dd17e10bd) | emit activate/deactivate events when an outlet gets attached/detached (#43333) |
| [![feat - faf9f5a3bc](https://img.shields.io/badge/faf9f5a3bc-feat-blue)](https://github.com/angular/angular/commit/faf9f5a3bc444bb6cbf75916c8022f60e0742bca) | new output that would notify when link is activated (#43280) |
| [![feat - 3c6b653089](https://img.shields.io/badge/3c6b653089-feat-blue)](https://github.com/angular/angular/commit/3c6b653089837459809a370ebcaf8911c3bab9ed) | Option to correctly restore history on failed navigation (#43289) |
| [![fix - 784671597e](https://img.shields.io/badge/784671597e-fix-green)](https://github.com/angular/angular/commit/784671597e0b28d9696bdc325b426a6c7be0cd8e) | Allow question marks in query param values (#31187) |
| [![fix - 796da641f0](https://img.shields.io/badge/796da641f0-fix-green)](https://github.com/angular/angular/commit/796da641f0a29e9f5f5de115c456da37426e971c) | Do not modify parts of URL excluded from with 'eager' updates (#43421) |
| [![fix - 772e08d14e](https://img.shields.io/badge/772e08d14e-fix-green)](https://github.com/angular/angular/commit/772e08d14e534f20e4376109e81604965e189abf) | fix Router's public API for canceledNavigationResolution (#43842) |
| [![fix - ccb09b4558](https://img.shields.io/badge/ccb09b4558-fix-green)](https://github.com/angular/angular/commit/ccb09b4558a3864fb5b2fe2214d08f1c1fe2758f) | null/undefined routerLink should disable navigation (#43087) |
| [![fix - 9e039ca68b](https://img.shields.io/badge/9e039ca68b-fix-green)](https://github.com/angular/angular/commit/9e039ca68bfae5328f3fc1f16fabd7673c466a25) | Only trigger router navigation on `popstate` events from `Location` subscription (#43328) |
| [![fix - c5d0bd4966](https://img.shields.io/badge/c5d0bd4966-fix-green)](https://github.com/angular/angular/commit/c5d0bd4966a4fc595d57f75569754b4d224ef2ba) | Prevent URL flicker when new navigations cancel ongoing ones (#43496) |
| [![fix - adc68b100b](https://img.shields.io/badge/adc68b100b-fix-green)](https://github.com/angular/angular/commit/adc68b100b98aef171ee298cc23bd5291b106526) | reuse route strategy fix (#43791) |
| [![refactor - 361273fad5](https://img.shields.io/badge/361273fad5-refactor-yellow)](https://github.com/angular/angular/commit/361273fad5030c900c83d333a779f6edbe20c688) | remove support for `loadChildren` string syntax (#43591) |
### service-worker
| Commit | Description |
| -- | -- |
| [![feat - 59225f5586](https://img.shields.io/badge/59225f5586-feat-blue)](https://github.com/angular/angular/commit/59225f5586f1319a47768cef2e3325d7ab6940af) | `SwUpdate#activeUpdate` and `SwUpdate#checkForUpdate` should have a meaningful outcome (#43668) |
| [![feat - 0dc45446fe](https://img.shields.io/badge/0dc45446fe-feat-blue)](https://github.com/angular/angular/commit/0dc45446fe487febaefaf68a928c5a249880f2f3) | expose more version update events (#43668) |
## Special Thanks
Ahmed Ayed, Alan Agius, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Bjarki, Charles Lyding, Dmitrij Kuba, Doug Parker, Dylan Hunn, George Kalpakas, Jessica Janiuk, Jochen Kraushaar, Joe Martin (Crowdstaffing), Joey Perrott, Jon Rimmer, JoostK, Kristiyan Kostadinov, Maximilian Köller, Paul Gschwendtner, Pei Wang, Pete Bacon Darwin, Tomasz Domański, Willy Schott, anandtiwary, dario-piotrowicz, iRealNirmal, ivanwonder, krzysztof-grzybek, mgechev and vthinkxie

软件描述

AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的库。

CVE编号

TSRC分析

暂无

业界资讯

暂无

评论

提交评论 您输入的评论有误,请重新输入