CHANGELOG_ARCHIVE.md
<a name="13.3.11"></a>
Andrew Scott, Billy Lando, George Kalpakas, Ian Gregory, Matt Shaffer, Rune Andersen Hartvig, dario-piotrowicz and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.10"></a>
A. J. Javier, Aristeidis Bampakos, J Rob Gant, Jerome Kruse, Joey Perrott, Nathan Nontell, Paul Gschwendtner, Roopesh Chinnakampalli, Thomas Mair, Tom Raithel, dario-piotrowicz and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.9"></a>
This release contains API docs improvements.
4javier, Bob Watson, Evan Lee, George Kalpakas, Joey Perrott, Pavan Kumar Jadda, celinetunc and mariu
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.8"></a>
| Commit | Type | Description |
|---|---|---|
| b4eb9ed884 | fix | Prevent TSServer from removing templates from project (#45965) |
Andrew Scott, George Kalpakas and Joey Perrott
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.7"></a>
| Commit | Type | Description |
|---|---|---|
| 73bbee2c0d | perf | allow checkNoChanges mode to be tree-shaken in production (#45936) |
| Commit | Type | Description |
|---|---|---|
| 5ca3bcf4f8 | fix | Add resource files as roots to their associated projects (#45601) |
Andrew Kushnir, Andrew Scott, George Kalpakas, JayMartMedia, JoostK, Paul Gschwendtner, Ted.chang, Thomas Mair, Will 保哥, dario-piotrowicz, mgechev and ᚷᛁᛟᚱᚷᛁ ᛒᚨᛚᚨᚲᚻᚨᛞᛉᛖ
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.6"></a>
Andrew Kushnir, Andrew Scott, George Kalpakas, Paul Gschwendtner, Pawel Kozlowski, Ryan Day and dario-piotrowicz
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.5"></a>
| Commit | Type | Description |
|---|---|---|
| 63398e0eb4 | fix | add this_is_bazel marker (#45728) |
Andrew Kushnir, George Kalpakas, Joey Perrott and dario-piotrowicz
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.4"></a>
| Commit | Type | Description |
|---|---|---|
| 9317f513d5 | fix | better error message when directive extends a component (#45658) |
| 4766817f02 | fix | improve multiple components match error (#45645) |
| Commit | Type | Description |
|---|---|---|
| d68333e508 | fix | two-way binding completion should not remove the trailing quote (#45582) |
Andrew Kushnir, Andrew Scott, George Kalpakas, Ilya Marchik, Jeremy Elbourn, Kristiyan Kostadinov, Louis Gombert, Mangalraj, Marko Kaznovac, Paul Gschwendtner, Saurabh Kamble, dario-piotrowicz and ivanwonder
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.3"></a>
| Commit | Type | Description |
|---|---|---|
| e50fd9ee87 | fix | avoid errors with extremely long instruction chains (#45574) |
4javier, Andrew Kushnir, Cédric Exbrayat, Dylan Hunn, George Kalpakas, Hossein Mousavi, Jason Hendee, Joe Martin (Crowdstaffing), Kristiyan Kostadinov, Michael-Doner, Michal Materowski and Virginia Dooley
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.2"></a>
| Commit | Type | Description |
|---|---|---|
| b46b25c562 | fix | handle structured AnimateTimings (#31107) |
Alan Agius, Andrew Kushnir, Christoph Guttandin, Cédric Exbrayat, mgechev and piyush132000
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.1"></a>
| Commit | Type | Description |
|---|---|---|
| 960e42b2ac | fix | ng module compilation workers are subject to linker race-conditions (#45393) |
| Commit | Type | Description |
|---|---|---|
| 3714305f84 | fix | scope css rules within @layer blocks (#45396) |
| Commit | Type | Description |
|---|---|---|
| 7f53c0f4ac | fix | handle inline type-check blocks in nullish coalescing extended check (#45478) |
AlirezaEbrahimkhani, Andrew Kushnir, Andrew Scott, Ben Brook, Dylan Hunn, George Kalpakas, JiaLiPassion, Joey Perrott, JoostK, Mike, Paul Gschwendtner, Willian Corrêa, arturovt, dario-piotrowicz, khai and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.0"></a>
| Commit | Type | Description |
|---|---|---|
| b5bb614c74 | feat | support TypeScript 4.6 (#45190) |
Alistair Kane, Andrew Scott and Kristiyan Kostadinov
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.7"></a>
| Commit | Type | Description |
|---|---|---|
| eac94f0945 | fix | improve error message for invalid value accessors (#45192) |
Alistair Kane, Amer Yousuf, Andrew Scott, Jessica Janiuk, Lee Cooper, alirezaghey and why520crazy
<!-- CHANGELOG SPLIT MARKER --><a name="13.3.0-rc.0"></a>
| Commit | Type | Description |
|---|---|---|
| b5bb614c74 | feat | support TypeScript 4.6 (#45190) |
Alistair Kane, Andrew Scott and Kristiyan Kostadinov
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.6"></a>
| Commit | Type | Description |
|---|---|---|
| 6efa366e2c | fix | compute correct offsets when interpolations have HTML entities (#44811) |
| Commit | Type | Description |
|---|---|---|
| 9bce9ce89e | fix | Prioritize Angular-specific completions over DOM completions (#45293) |
| Commit | Type | Description |
|---|---|---|
| cff1c5622f | fix | file system hash in batch of 500 elements (#45262) |
Andrew Scott, Anner Visser, Aristeidis Bampakos, JiaLiPassion, Joey Perrott, Kristiyan Kostadinov, Luca, Mladen Jakovljević, Paul Gschwendtner, Srikanth Kolli and nanda18
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.5"></a>
| Commit | Type | Description |
|---|---|---|
| 6c61d20476 | fix | allow animations with unsupported CSS properties (#45185) |
| Commit | Type | Description |
|---|---|---|
| 64da1daa78 | fix | canceled JSONP requests won't throw console error with missing callback function (#36807) |
| 56ca7d385b | perf | make NgLocalization token tree-shakable (#45118) (#45226) |
| Commit | Type | Description |
|---|---|---|
| 6c906a5bb9 | fix | Support resolve animation name from the DTS (#45169) |
| Commit | Type | Description |
|---|---|---|
| e8fd452bd2 | fix | remove individual commands for updating gold files (#45198) |
| 82d772857c | perf | make Compiler, ApplicationRef and ApplicationInitStatus tree-shakable (#45102) (#45222) |
| 71ff12c1cc | perf | make LOCALE_ID and other tokens from ApplicationModule tree-shakable (#45102) (#45222) |
| Commit | Type | Description |
|---|---|---|
| d388522745 | fix | avoid imports into compiler-cli package (#45180) |
Andrew Kushnir, Andrew Scott, Charles Lyding, Guillaume Bonnet, Jessica Janiuk, JoostK, Martin Sikora, Paul Gschwendtner, Theodore Brown, dario-piotrowicz and ivanwonder
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.4"></a>
| Commit | Type | Description |
|---|---|---|
| 1a4b489692 | perf | improve algorithm to balance animation namespaces (#45113) |
| Commit | Type | Description |
|---|---|---|
| cbd23ee0de | perf | make IterableDiffers and KeyValueDiffers tree-shakable (#45094) (#45115) |
Alan Cohen, AlirezaEbrahimkhani, Andrew Kushnir, Daniele Maltese, David Wolf, JoostK, Paul Gschwendtner, dario-piotrowicz and manuelkroiss
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.3"></a>
| Commit | Type | Description |
|---|---|---|
| 0050b01b62 | perf | made errors in the animations package tree shakeable (#45079) |
| Commit | Type | Description |
|---|---|---|
| 09f0254bdd | perf | chain element start/end instructions (#44994) |
| Commit | Type | Description |
|---|---|---|
| 92cf9fbebe | fix | ViewContainerRef.createComponent should consult module injector when custom one is provided (#44966) |
AlirezaEbrahimkhani, Amer Yousuf, Andrew Kushnir, Aristeidis Bampakos, Dario Piotrowicz, Esteban Gehring, Jessica Janiuk, JiaLiPassion, Kristiyan Kostadinov, Mina Hosseini Moghadam, Patrick Cameron, Srdjan Milic, Yousaf Nawaz, dario-piotrowicz, markostanimirovic, mgechev and zuckjet
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.2"></a>
| Commit | Type | Description |
|---|---|---|
| 37af6abb49 | fix | allow banana-in-a-box bindings to end with non-null assertion (#37809) |
| Commit | Type | Description |
|---|---|---|
| b75e90f809 | fix | incorrectly keeping track of ngModel with ngFor inside a form (#40459) |
| Commit | Type | Description |
|---|---|---|
| 3fae6637e7 | perf | remove IE special status handling (#44354) |
| Commit | Type | Description |
|---|---|---|
| b9aab0c87b | fix | Do not trigger duplicate navigation events from Angular Router (#43441) |
Alan Agius, Alan Cohen, Andrew Kushnir, Andrew Scott, Daniel Díaz, Dario Piotrowicz, Doug Parker, Jayson Acosta, Joey Perrott, JoostK, Kristiyan Kostadinov, Olivier Capuozzo, Ramzan, Shai Reznik, TANMAY SRIVASTAVA, dario-piotrowicz, iRealNirmal, jhonyeduardo, mgechev and zuckjet
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.1"></a>
| Commit | Type | Description |
|---|---|---|
| 4644886aaf | perf | remove no longer needed CssKeyframes classes (#44903) (#44919) |
| Commit | Type | Description |
|---|---|---|
| b4e4617807 | fix | include query parameters for open HTTP requests in verify (#44917) |
| Commit | Type | Description |
|---|---|---|
| 0778e6f7d7 | fix | accept nullish coalescing operator for any and unknown types (#44862) |
| 07185f4ed1 | fix | enable nullish coalescing check only with strictNullChecks (#44862) |
| 4a5ad1793f | fix | ensure casing of logical paths is preserved (#44798) |
| Commit | Type | Description |
|---|---|---|
| 7ec482d9c2 | fix | Add back support for namespace URIs in createElement of dom renderer (#44914) |
| 250dc40a46 | fix | flush delayed scoping queue while setting up TestBed (#44814) |
| Commit | Type | Description |
|---|---|---|
| 1aebbf8714 | fix | ensure OnPush ancestors are marked dirty when the promise resolves (#44886) |
| 6b7fffcbeb | fix | Update the typed forms migration schematic to find all files. (#44881) |
Alan, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Arjen, Daniel Díaz, David Shevitz, Doug Parker, Dylan Hunn, Esteban Gehring, George Kalpakas, Jessica Janiuk, JoostK, Juri Strumpflohner, Lee Robinson, Maarten Tibau, Paul Gschwendtner, Theodore Brown, arturovt, dario-piotrowicz, fru2, markostanimirovic and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="13.2.0"></a>
The CachedResourceLoader and RESOURCE_CACHE_PROVIDER symbols were previously necessary in some cases to test AOT-compiled components with View Engine, but they are no longer needed since Ivy.
The ComponentFactory and ComponentFactoryResolver classes are deprecated. Since Ivy, there is no need to resolve Component factories. Please use other APIs where you Component classes can be used directly (without resolving their factories).
Since Ivy, the CompilerOptions.useJit and CompilerOptions.missingTranslation config options are unused, passing them has no effect.
| Commit | Type | Description |
|---|---|---|
| 9c11183e74 | docs | deprecate CachedResourceLoader and RESOURCE_CACHE_PROVIDER symbols (#44749) |
| 9f12e7fea4 | docs | deprecate ComponentFactory and ComponentFactoryResolver symbols (#44749) |
| 4e95a316ce | docs | deprecate unused config options from the CompilerOptions interface (#44749) |
| Commit | Type | Description |
|---|---|---|
| a4ab6d6b72 | feat | add support for safe calls in templates (#44580) |
| abd1bc8039 | fix | correct spans when parsing bindings with comments (#44785) |
| ed67a074ce | fix | properly compile DI factories when coverage reporting is enabled (#44732) |
| Commit | Type | Description |
|---|---|---|
| fa835b5a29 | feat | enable extended diagnostics by default (#44712) |
| 73424def13 | feat | provide the animations for DirectiveMeta (#44630) |
| fe3e4d6865 | fix | Handle ng-template with structural directive in indexer (#44788) |
| 7316e72ec5 | fix | properly index <svg> elements when on a template (#44785) |
| 100091ebf0 | fix | remove leftover _extendedTemplateDiagnostics requirements (#44777) |
| d2ae96f742 | fix | skip ExtendedTemplateCheckerImpl construction if there were configuration errors (#44778) |
| Commit | Type | Description |
|---|---|---|
| 5626b34264 | fix | consistently use namespace short name rather than URI (#44766) |
| 94bfcdd9de | fix | error if NgZone.isInAngularZone is called with a noop zone (#44800) |
| Commit | Type | Description |
|---|---|---|
| 72092ebd26 | feat | Allow a FormControl to use initial value as default. (#44434) |
| f7aa937cac | fix | Make some minor fixups for forward-compatibility with typed forms. (#44540) |
| Commit | Type | Description |
|---|---|---|
| 5a4ddfd4f5 | feat | Allow symbol keys for Route data and resolve properties (#44519) |
Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Dario Piotrowicz, Derek Cormier, Doug Parker, Douglas Parker, Dylan Hunn, George Kalpakas, Jessica Janiuk, JoostK, Kristiyan Kostadinov, Martin Probst, Oleg Postoev, Stephanie Tuerk, Tim Bowersox, Wiley Marques, Yousaf Nawaz, dario-piotrowicz, iRealNirmal, ivanwonder and shejialuo
<!-- CHANGELOG SPLIT MARKER --><a name="13.1.3"></a>
| Commit | Type | Description |
|---|---|---|
| af0a152a2c | fix | apply setStyles to only rootTimelines (#44515) |
| Commit | Type | Description |
|---|---|---|
| 626f3f230b | perf | reduce analysis work during incremental rebuilds (#44731) |
| Commit | Type | Description |
|---|---|---|
| f9ca4d8499 | fix | support element accesses for export declarations (#44669) |
Alan Agius, Andrew Kushnir, AnkitSharma-007, Daniel Díaz, Dmytro Mezhenskyi, Jessica Janiuk, Joey Perrott, JoostK, Ramesh Thiruchelvam, dario-piotrowicz, iRealNirmal and Łukasz Holeczek
<!-- CHANGELOG SPLIT MARKER --><a name="13.1.2"></a>
| Commit | Type | Description |
|---|---|---|
| abc217b28e | fix | retain triggers values for moved tracked list items (#44578) |
| Commit | Type | Description |
|---|---|---|
| 59eef29a6c | fix | correct spans when parsing bindings with comments (#44678) |
| Commit | Type | Description |
|---|---|---|
| 08049fa23f | fix | enable narrowing of using type guard methods (#44447) |
| a26afce68c | fix | fix crash during type-checking of library builds (#44587) |
| 1e918b6f31 | fix | handle property reads of ThisReceiver in the indexer (#44678) |
| 63c8e56a3a | fix | incorrectly interpreting $any calls with a property read (#44657) |
| 60fb27f12d | fix | properly index <svg> elements (#44678) |
| Commit | Type | Description |
|---|---|---|
| f5addee488 | fix | revert the test files for Ivy (#44528) |
Abdurrahman Abu-Hijleh, Adam Plumer, Alex Rickabaugh, AlirezaEbrahimkhani, Andrew Kushnir, Andrew Scott, Borja Paz Rodríguez, Chihab Otmani, Chris Mancini, Dario Piotrowicz, Doug Parker, George Kalpakas, Joey Perrott, JoostK, Kristiyan Kostadinov, Kyoz, Patrick Prakash, Paul Gschwendtner, Serhey Dolgushev, Yousaf Nawaz, Yuchao Wu, alkavats1, dario-piotrowicz, huangqing, ivanwonder, shejialuo, twerske, wszgrcy and zuckjet
<!-- CHANGELOG SPLIT MARKER --><a name="13.1.1"></a>
| Commit | Type | Description |
|---|---|---|
| bb1d4ff315 | fix | don't consume instructions for animateChild (#44357) |
| d8b6adb7bc | fix | should not invoke disabled child animations (#37724) |
| Commit | Type | Description |
|---|---|---|
| bce108ab49 | fix | _reduceValue arrow function now has correct types. (#44483) |
| 998c1e63fe | fix | I indroduced a minor error in a previous PR: pendingValue is a value not a boolean flag. (#44450) |
Aristeidis Bampakos, Dylan Hunn, George Kalpakas, JoostK, Kristiyan Kostadinov, Paul Gschwendtner, Spej, Yousaf Nawaz, dario-piotrowicz, faso-dev, jaybell and zuckjet
<!-- CHANGELOG SPLIT MARKER --><a name="13.1.0"></a>
downgradeModule function calls with NgModule factories are deprecated. Please use NgModule class based downgradeModule calls instead.TestRequest from @angular/common/http/testing no longer
accepts ErrorEvent when simulating XHR errors. Instead, instances of
ProgressEvent should be passed, matching with the native browser behavior.| Commit | Type | Description |
|---|---|---|
| dbc46d68b9 | docs | deprecate factory-based signature of the downgradeModule function (#44090) |
| Commit | Type | Description |
|---|---|---|
| 489cf42cd0 | fix | incorrect error type for XHR errors in TestRequest (#36082) |
| 13362972bb | perf | code size reduction of ngFor directive (#44315) |
| Commit | Type | Description |
|---|---|---|
| c85bcb0c63 | feat | reference ICU message IDs from their placeholders (#43534) |
| Commit | Type | Description |
|---|---|---|
| 5dff077d50 | feat | add migration to remove entryComponents (#44308) |
| e65a245a0b | feat | add migration to remove entryComponents (#44322) |
| d56e3f43a1 | feat | support TypeScript 4.5 (#44164) |
| Commit | Type | Description |
|---|---|---|
| d452b388bd | feat | add has() method to HttpContext class (#43887) |
| Commit | Type | Description |
|---|---|---|
| d3cf222a81 | feat | support "associated message ids" for placeholders (#43534) |
| Commit | Type | Description |
|---|---|---|
| 41265919aa | fix | correctly resolve UMD dependencies (#44381) |
| Commit | Type | Description |
|---|---|---|
| 34f990986c | feat | support NgModule class as an argument of the downgradeModule function (#43973) |
Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Doug Parker, Dustin M. Eastway, Dylan Hunn, George Kalpakas, HyperLife1119, Jelle Bruisten, Jessica Janiuk, Joey Perrott, JoostK, Kristiyan Kostadinov, Markus Doggweiler, Paul Gschwendtner, Pei Wang, Pete Bacon Darwin and dario-piotrowicz
<!-- CHANGELOG SPLIT MARKER --><a name="13.0.3"></a>
| Commit | Type | Description |
|---|---|---|
| 6cdbfdbe6e | fix | downlevel transform incorrectly extracting constructor parameters for nested classes (#44281) |
| 305b76b45f | fix | interpret string concat calls (#44167) |
| Commit | Type | Description |
|---|---|---|
| 0ca5c5bd09 | fix | add missing info about a component in the "pipe could not be found" error message (#44081) |
| 907da3977a | fix | destroy hooks not set up for useClass provider using forwardRef (#44281) |
| bcd3b4959b | fix | support cyclic metadata in TestBed overrides (#44215) |
| Commit | Type | Description |
|---|---|---|
| 96fedd249e | fix | make the FormControlStatus available as a public API (#44183) |
| Commit | Type | Description |
|---|---|---|
| cabc1786de | fix | Correctly parse inputs and selectors with dollar signs (#44268) |
| Commit | Type | Description |
|---|---|---|
| b68994d20a | fix | correctly report error when collecting dependencies of UMD module (#44245) |
| 6f5c0c1515 | fix | ensure that ngcc does not write a lock-file into node_modules package directories (#44228) |
| bf5f734e9c | fix | support the UMD wrapper function format emitted by Webpack (#44245) |
| Commit | Type | Description |
|---|---|---|
| d265d0d241 | fix | prevent componentless routes from being detached (#44240) |
Alan Agius, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Artur, Christian-E, David Shevitz, Doug Parker, Douglas Parker, Dylan Hunn, George Kalpakas, Jessica Janiuk, Joey Perrott, JoostK, Kristiyan Kostadinov, Marc Redemske, Paul Gschwendtner, Pei Wang, Pete Bacon Darwin, Ramesh Thiruchelvam, Ravi Chandra, Rohan Pednekar, Ruslan Usmanov, dario-piotrowicz, profanis and unknown
<!-- CHANGELOG SPLIT MARKER --><a name="13.0.2"></a>
This release contains various API docs improvements.
Andrew Kushnir, Armen Vardanyan, Dylan Hunn, Joey Perrott, Martin von Gagern, Paul Gschwendtner, Pete Bacon Darwin, Ramesh Thiruchelvam, dario-piotrowicz and fusho-takahashi
<!-- CHANGELOG SPLIT MARKER --><a name="13.0.1"></a>
| Commit | Type | Description |
|---|---|---|
| ee2031d9f4 | fix | ensure that partially compiled queries can handle forward references (#44113) |
| e5a960b159 | fix | generate correct code for safe method calls (#44088) |
| Commit | Type | Description |
|---|---|---|
| dede29e4f3 | fix | ensure literal types are retained when strictNullInputTypes is disabled (#38305) |
| 04df3a0b92 | fix | handle pre-release versions when checking version (#44109) |
| Commit | Type | Description |
|---|---|---|
| 4c700b6244 | fix | do not use Function constructors in development mode to avoid CSP violations (#43587) |
| Commit | Type | Description |
|---|---|---|
| 30a27adf9a | fix | use correct parent in animation removeChild callback (#44033) |
A. Singh, Alan Agius, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, George Kalpakas, Joe Martin (Crowdstaffing), Joel Lefkowitz, Joey Perrott, JoostK, Kristiyan Kostadinov, Michael Urban, Paul Gschwendtner, Pavan Kumar Jadda, Pei Wang, Pete Bacon Darwin, Roman Frołow, dario-piotrowicz, iRealNirmal, ileil, kreuzerk, mgechev, profanis and raman
<!-- CHANGELOG SPLIT MARKER --><a name="13.1.0-next.0"></a>
| Commit | Type | Description |
|---|---|---|
| c85bcb0c63 | feat | reference ICU message IDs from their placeholders (#43534) |
| Commit | Type | Description |
|---|---|---|
| d3cf222a81 | feat | support "associated message ids" for placeholders (#43534) |
Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Doug Parker, Dylan Hunn, George Kalpakas, Jessica Janiuk, Joey Perrott, Paul Gschwendtner and Pete Bacon Darwin
<a name="13.0.0"></a>
Blog post "Angular v13 is now available".
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.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.
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.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
equivalent 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.
When storing and retrieving a DetachedRouteHandle, the Router traverses
the Route children in order to correctly allow storing a parent route when
there are several possible child Route configs that can be stored. This allows
a RouteReuseStrategy to store a parent Route and a child, while preserving
the ability to change the child route while restoring the parent. Some
implementations of RouteReuseStrategy will need to be updated to correctly
store and retrieve the DetachedRouteHandle of descendants as well as the stored
parent ActivatedRouteSnapshot. Previously, the Router would only store
the parent, making it impossible to change descendant paths when a stored parent
was retrieved. See #20114.
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:
SpyNgModuleFactoryLoaderDeprecatedLoadChildrenThe 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.
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.
Angular no longer requires component factories to dynamically create components. The factory-based signature of the ViewContainerRef.createComponent function is deprecated in favor of a different signature that allows passing component classes instead.
The getModuleFactory function is deprecated in favor of the getNgModuleById one. With Ivy, it's possible to work with NgModule classes directly, without retrieving corresponding factories, so the getNgModuleById should be used instead.
Ivy made it possible to avoid the need to resolve Component and NgModule factories. Framework APIs allow to use Component and NgModule Types directly. As a result, the PlatformRef.bootstrapModuleFactory and a factory-based signature of the ApplicationRef.bootstrap method are now obsolete and are now deprecated. The PlatformRef.bootstrapModuleFactory calls can be replaced with PlatformRef.bootstrapModule ones. The ApplicationRef.bootstrap method allows to provide Component Type, so this can be used a replacement for the factory-based calls.
In ViewEngine, JIT compilation required special providers (like Compiler, CompilerFactory, etc) to be injected in the app and corresponding methods to be invoked. With Ivy, JIT compilation takes place implicitly if the Component, NgModule, etc. have not already been AOT compiled. Those special providers were made available in Ivy for backwards-compatibility with ViewEngine to make the transition to Ivy smoother. Since ViewEngine is deprecated and will soon be removed, those symbols are now deprecated as well:
ModuleWithComponentFactories
Compiler
CompilerFactory
JitCompilerFactory
NgModuleFactory
Important note: this deprecation doesn't affect JIT mode in Ivy (JIT remains available with Ivy).
aotSummaries usage in TestBed is deprecated and will be removed in a future version of Angular.renderModuleFactory symbol in @angular/platform-server is no longer necessary as of Angular v13.The renderModuleFactory calls can be replaced with renderModule.
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.
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 | Type | Description |
|---|---|---|
| 747553dd68 | docs | deprecate ViewEngine-based renderModuleFactory (#43757) |
| Commit | Type | Description |
|---|---|---|
| 62d7005a52 | feat | add strict_templates and experimental_extended_template_diagnostics to ng_module() rule (#43582) |
| d977701a43 | feat | allow for custom conditions to be set in ng_package targets (#43764) |
| 4886585875 | feat | create transition for enabling partial compilation (#43431) |
| cd1b52483e | feat | expose esm2020 and es2020 conditions in APF package exports (#43740) |
| 49b82ae561 | feat | implement partial compilation APF v13 for ng_package rule (#43431) |
| 274cb38e0b | feat | switch prodmode output to ES2020 (#43431) |
| 73ac50c447 | feat | wire up partial compilation build setting in ng_module (#43431) |
| e0a72857cc | fix | construct a manifest file even when warnings are emitted (#43582) |
| dbe656d1e0 | fix | ngc-wrapped should not rely on linker for external workspaces (#43690) |
| Commit | Type | Description |
|---|---|---|
| adf4481211 | feat | add injection token for default date pipe timezone (#43611) |
| c6a93001eb | fix | synchronise location mock behavior with the navigators (#41730) |
| Commit | Type | Description |
|---|---|---|
| 14b492df26 | fix | do not error if $any is used inside a listener (#43866) |
| Commit | Type | Description |
|---|---|---|
| bed121c34f | feat | inline resources when generating class metadata calls (#43178) |
| 263feba5c2 | fix | handle nullable expressions correctly in the nullish coalescing extended template diagnostic (#43572) |
| 8f7fdc59af | fix | not evaluating new signature for __spreadArray (#43618) |
| 426a3ecae7 | fix | updates ngc to pass the build when only warnings are emitted (#43673) |
| Commit | Type | Description |
|---|---|---|
| a3960846da | feat | add createNgModuleRef function to create NgModuleRef based on NgModule class (#43580) |
| fe1f6421d2 | feat | add getNgModuleById function to retrieve loaded NgModules by id (#43580) |
| 81c7eb813c | feat | add migration to opt out existing apps from new test module teardown behavior (#43353) |
| e57691c9c5 | feat | Add migration to update empty routerLinks in templates (#43176) |
| 7dccbdd27b | feat | add support for Types in ViewContainerRef.createComponent (#43022) |
| c14085e434 | feat | drop support for TypeScript 4.2 and 4.3 (#43642) |
| 94ba59bc9d | feat | enable test module teardown by default (#43353) |
| ea61ec2562 | feat | support TypeScript 4.4 (#43281) |
| e0a0d05d45 | feat | update node version support range to support v16 (#43740) |
| 7396021e4b | fix | avoid duplicating comments in TestBed teardown migration (#43776) |
| 7fd0428aae | fix | don't rethrow errors if test teardown has been disabled (#43635) |
| 66fb311d20 | fix | incorrect signature for initTestEnvironment (#43615) |
| 8ae99821d6 | fix | support InjectFlags argument in NodeInjector.get() (#41592) |
| 8878183521 | perf | remove support for the deprecated WrappedValue (#43507) |
| Commit | Type | Description |
|---|---|---|
| a468213f34 | fix | remove ng-add schematic (#43975) |
| f544a53f5f | fix | remove incorrect @angular/platform-browser peer dependency (#43975) |
| Commit | Type | Description |
|---|---|---|
| d9d8f950e9 | feat | allow disabling min/max validators dynamically (by setting the value to null) (#42978) |
| e49fc96ed3 | feat | Make Form Statuses use stricter types. (#42952) |
| Commit | Type | Description |
|---|---|---|
| b10d90bef6 | feat | Add method for retrieving the component template at the cursor location (#43208) |
| d5f9890c92 | feat | auto-apply optional chaining on nullable symbol (#42995) |
| 69957f72e2 | feat | provide snippets for attribute (#43590) |
| fc3b50e427 | fix | exclude the SafePropertyRead when applying the optional chaining (#43321) |
| Commit | Type | Description |
|---|---|---|
| 95a68c5dc3 | fix | account for CRLF characters in template migrations (#44013) |
| 77bd2538cb | fix | apply individual expression edits to preserve newline characters (#43519) |
| d849350c7b | fix | Ensure routerLink migration doesn't update unrelated files (#43519) |
| 2efc18e675 | fix | migration failed finding tsconfig file (#43343) |
| b6f2a55147 | fix | prevent migrations from updating external templates multiple times (#44013) |
| Commit | Type | Description |
|---|---|---|
| 4f3beffdbf | feat | emit activate/deactivate events when an outlet gets attached/detached (#43333) |
| faf9f5a3bc | feat | new output that would notify when link is activated (#43280) |
| 3c6b653089 | feat | Option to correctly restore history on failed navigation (#43289) |
| 784671597e | fix | Allow question marks in query param values (#31187) |
| 796da641f0 | fix | Do not modify parts of URL excluded from with 'eager' updates (#43421) |
| 772e08d14e | fix | fix Router's public API for canceledNavigationResolution (#43842) |
| ccb09b4558 | fix | null/undefined routerLink should disable navigation (#43087) |
| 9e039ca68b | fix | Only trigger router navigation on popstate events from Location subscription (#43328) |
| c5d0bd4966 | fix | Prevent URL flicker when new navigations cancel ongoing ones (#43496) |
| adc68b100b | fix | reuse route strategy fix (#43791) |
| 361273fad5 | refactor | remove support for loadChildren string syntax (#43591) |
| Commit | Type | Description |
|---|---|---|
| 59225f5586 | feat | SwUpdate#activeUpdate and SwUpdate#checkForUpdate should have a meaningful outcome (#43668) |
| 0dc45446fe | feat | expose more version update events (#43668) |
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
<a name="12.2.15"></a>
| Commit | Type | Description |
|---|---|---|
| b6554d75cd | fix | correctly resolve UMD dependencies (#44382) |
George Kalpakas
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.14"></a>
| Commit | Type | Description |
|---|---|---|
| e3db0385b6 | fix | ensure that partially compiled queries can handle forward references (#44124) |
| Commit | Type | Description |
|---|---|---|
| a8be244113 | fix | correctly report error when collecting dependencies of UMD module (#44245) |
| fc072935ee | fix | support the UMD wrapper function format emitted by Webpack (#44245) |
George Kalpakas, Pete Bacon Darwin and iRealNirmal
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.13"></a>
| Commit | Type | Description |
|---|---|---|
| 9a89db790f | fix | avoid broken references in .d.ts files due to @internal markers (#43965) |
| Commit | Type | Description |
|---|---|---|
| 8f402c9d06 | fix | support InjectFlags argument in NodeInjector.get() (#41592) |
Alan Agius, George Kalpakas, Jochen Kraushaar, Joe Martin (Crowdstaffing), JoostK and vthinkxie
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.12"></a>
| Commit | Type | Description |
|---|---|---|
| 112557497c | fix | avoid broken references in .d.ts files due to @internal markers (#43527) |
| Commit | Type | Description |
|---|---|---|
| 067ae54d46 | fix | support alternate UMD layout when adding new imports (#43931) |
Alan Agius, Andrew Kushnir, George Kalpakas, Jessica Janiuk, Joey Perrott, JoostK, Mladen Jakovljević, Virginia Dooley, amayer42, dirk diebel and ericcheng2005
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.11"></a>
| Commit | Type | Description |
|---|---|---|
| cab21cea7a | fix | support alternate wrapper function layout for UMD (#43879) |
| Commit | Type | Description |
|---|---|---|
| 58c11865ac | fix | Do not clear currentNavigation if already set to next one (#43852) |
Alan Agius, Andrew Kushnir, Andrew Scott, David Shevitz, George Kalpakas, Joe Martin (Crowdstaffing), Natalia Venditto, Pete Bacon Darwin, Younes Jaaidi and dario-piotrowicz
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.10"></a>
Alan Agius, Daniel Díaz, David Shevitz, Doug Parker, George Kalpakas, Joe Martin (Crowdstaffing), Tanguy Nodet, Thomas Turrell-Croft, dario-piotrowicz, hchiam, markostanimirovic and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.9"></a>
| Commit | Type | Description |
|---|---|---|
| b4b441077a | fix | handle invalid constructor parameters in partial factory declarations (#43619) |
| Commit | Type | Description |
|---|---|---|
| 7f6050587d | fix | unset attachRef when router-outlet is destroyed to avoid mounting a destroyed component (#43697) |
| Commit | Type | Description |
|---|---|---|
| c4ecc07838 | fix | make ngsw.json generation deterministic and correct (#43679) |
Alan Agius, Daniel Díaz, George Kalpakas, JoostK, Kristiyan Kostadinov, Pete Bacon Darwin, Wey-Han Liaw, dario-piotrowicz, iRealNirmal, little-pinecone, mgechev, ultrasonicsoft and xiaohanxu-nick
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.8"></a>
| Commit | Type | Description |
|---|---|---|
| c1338bf837 | fix | correctly interpret token arrays in @Injectable deps (#43226) |
| Commit | Type | Description |
|---|---|---|
| c8f8d7d3b1 | fix | provide dom event completions (#43299) |
| Commit | Type | Description |
|---|---|---|
| 69299f7d4d | fix | do not fail for packages which correspond with Object members (#43589) |
| Commit | Type | Description |
|---|---|---|
| 3cf41354ae | fix | do not unassign clients from a broken version (#43518) |
Adrien Crivelli, Alex Rickabaugh, Andrew Scott, Bobby Galli, Chris, Daniel Díaz, Dario Piotrowicz, George Kalpakas, Joe Martin (Crowdstaffing), JoostK, Pete Bacon Darwin, Rafael Santana, Raj Sekhar, Ricardo Chavarria, Teri Glover, Virginia Dooley, dario-piotrowicz, enisfr and wszgrcy
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.7"></a>
| Commit | Type | Description |
|---|---|---|
| 2bb4bf1468 | fix | titlecase pipe incorrectly handling numbers (#43476) |
| Commit | Type | Description |
|---|---|---|
| 9c8a1f8a71 | fix | include leading whitespace in source-spans of i18n messages (#43132) |
| Commit | Type | Description |
|---|---|---|
| defb02f11e | fix | handle directives that refer to a namespaced class in a type parameter bound (#43511) |
| Commit | Type | Description |
|---|---|---|
| adc7c56ede | fix | improve error message for missing animation trigger (#41356) |
Andrew Scott, Daniel Díaz, George Kalpakas, JoostK, Kristiyan Kostadinov, Mwiku, Pete Bacon Darwin, Teri Glover, Virginia Dooley, Xiaohanxu1996, dario-piotrowicz and kirjs
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.6"></a>
| Commit | Type | Description |
|---|---|---|
| 141fde1632 | fix | emit pure annotations to static property initializers (#43344) |
| Commit | Type | Description |
|---|---|---|
| ca510c87c5 | fix | emit pure annotations to static property initializers (#43344) |
| Commit | Type | Description |
|---|---|---|
| 4034f252c9 | fix | Allow renavigating to failed URLs (#43424) |
| Commit | Type | Description |
|---|---|---|
| a102b27641 | fix | clear service worker cache in safety worker (#43324) |
Alan Agius, Amadou Sall, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Bjarki, David Shevitz, George Kalpakas, Joe Martin (Crowdstaffing), Michele Stieven, Naveed Ahmed, dario-piotrowicz, mezhik91 and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.5"></a>
| Commit | Description |
|---|---|
| a0bd6e90f9 | fix: add more context to Unhandled Navigation Error (#43291) |
Alan Agius, Charles Barnes, Enea Jahollari, George Kalpakas, Ikko Ashimine, Paul Gschwendtner, Pete Bacon Darwin, William Sedlacek and dario-piotrowicz
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.4"></a>
| Commit | Description |
|---|---|
| 8233906be2 | fix: Emit type annotations for synthesized decorator fields (#43021) |
Andrew Scott, Daniel Trevino, George Kalpakas, Joey Perrott, Kristiyan Kostadinov, nickreid and segunb
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.3"></a>
| Commit | Description |
|---|---|
| fc7f92159d | fix: NPE if onActionClick is undefined (#43210) |
Daniel Trevino, Erik Slack, George Kalpakas, dario-piotrowicz and shlasouski
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.2"></a>
| Commit | Description |
|---|---|
| bb6555979d | fix: add pure annotations to static property initializers (#43064) |
| Commit | Description |
|---|---|
| 738b23347e | fix: add pure annotations to static property initializers (#43064) |
| Commit | Description |
|---|---|
| 535837e617 | perf: avoid intermediate arrays in server transition (#43145) |
| Commit | Description |
|---|---|
| 6449590ec8 | fix: eagerly update internal state on browser-triggered navigations (#43102) |
Andrew Scott, Aristeidis Bampakos, Charles Lyding, Edoardo Dusi, George Kalpakas, Joe Martin (Crowdstaffing), Joey Perrott, Kirk Larkin, Kristiyan Kostadinov, Pete Bacon Darwin, TIffany Davis, Theoklitos Bampouris, ali, dario-piotrowicz and pichuser
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.1"></a>
| Commit | Description |
|---|---|
| dd3abdb9d9 | fix(router): ensure check for match options is compatible with property renaming (#43086) |
Amadou Sall, Andrew Kushnir, Andrew Scott, Daniel Trevino, Erik Slack, Fabien BERNARD, George Kalpakas, Jeroen van Warmerdam, Joey Perrott, Tim Gates and Vugar_Abdullayev
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.0"></a>
| Commit | Description |
|---|---|
| bd7f0d8b70 | fix(core): incorrect error reported when trying to re-create view which had an error during creation (#43005) |
| Commit | Description |
|---|---|
| aace1e71d8 | fix(language-service): global autocomplete doesn't work when the user tries to modify the symbol (#42923) |
Alex Rickabaugh, Joe Martin, Joey Perrott, Kristiyan Kostadinov, Nichola Alkhouri, Paul Gschwendtner, Pete Bacon Darwin, atscott, dario-piotrowicz and ivanwonder
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.5"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.0-rc.0"></a>
| Commit | Description |
|---|---|
| ed9cfb674f | fix(compiler-cli): use correct module resolution context for absolute imports in .d.ts files (#42879) |
| 5fb23eccea | perf(compiler-cli): skip analysis in incremental builds for files without Angular behavior (#42562) |
| Commit | Description |
|---|---|
| eefe1682e8 | fix(core): correctly handle null or undefined in ErrorHandler#handleError() (#42881) |
| Commit | Description |
|---|---|
| 1d9d02696e | feat(forms): add hasValidators, addValidators, and removeValidators methods (for both sync and async) (#42838) |
| a502279592 | feat(forms): allow minLength/maxLength validator to be bound to null (#42565) |
| Commit | Description |
|---|---|
| 7c35ca0e00 | feat(language-service): support autocomplete string literal union types in templates (#42729) |
| Commit | Description |
|---|---|
| 0d81b007e4 | fix(router): add missing outlet events to RouterOutletContract (#42431) |
| dbae00195e | feat(router): ability to provide custom route reuse strategy via DI for RouterTestingModule (#42434) |
Andrew Scott, Daniel Trevino, Dmitrij Kuba, Dylan Hunn, George Kalpakas, Joey Perrott, JoostK, Paul Gschwendtner, Pete Bacon Darwin, Steven Masala, Teri Glover, Vladyslav, Yuvaraj, codebriefcase, iRealNirmal and ivanwonder
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.4"></a>
| Commit | Description |
|---|---|
| 77ae4459d3 | fix(compiler-cli): use correct module resolution context for absolute imports in .d.ts files (#42879) |
| f589b01672 | perf(compiler-cli): skip analysis in incremental builds for files without Angular behavior (#42562) |
| Commit | Description |
|---|---|
| a779a1029b | fix(core): correctly handle null or undefined in ErrorHandler#handleError() (#42881) |
Andrew Scott, Daniel Trevino, Dylan Hunn, George Kalpakas, Joey Perrott, JoostK, Paul Gschwendtner, Pete Bacon Darwin, Teri Glover, Vladyslav, Yuvaraj and codebriefcase
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.0-next.3"></a>
| Commit | Description |
|---|---|
| f12c53342c | fix(animations): normalize final styles in buildStyles (#42763) |
| Commit | Description |
|---|---|
| 70c3461be3 | fix(compiler-cli): use correct module import for types behind a forwardRef (#42887) |
| 07d7e6034f | perf(compiler-cli): optimize cycle detection using a persistent cache (#41271) |
| Commit | Description |
|---|---|
| 307dac67bc | fix(core): use correct injector when resolving DI tokens from within a directive provider factory (#42886) |
Alan Agius, Alex Rickabaugh, David Shevitz, George Kalpakas, Joey Perrott, JoostK, Krzysztof Kotowicz, Minko Gechev, Paul Gschwendtner and dario-piotrowicz
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.3"></a>
| Commit | Description |
|---|---|
| 3cddc3d6bc | fix(animations): normalize final styles in buildStyles (#42763) |
| Commit | Description |
|---|---|
| d207ea06d1 | fix(compiler-cli): use correct module import for types behind a forwardRef (#42887) |
| e6d520f3d9 | perf(compiler-cli): optimize cycle detection using a persistent cache (#41271) |
| Commit | Description |
|---|---|
| a6db152c78 | fix(core): use correct injector when resolving DI tokens from within a directive provider factory (#42886) |
Alan Agius, David Shevitz, George Kalpakas, Joey Perrott, JoostK, Krzysztof Kotowicz, Minko Gechev, Paul Gschwendtner and dario-piotrowicz
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.0-next.2"></a>
| Commit | Description |
|---|---|
| 7e04116d15 | fix(bazel): enable dts bundling for Ivy packages (#42728) |
| Commit | Description |
|---|---|
| e42aa6c13b | fix(common): re-sort output of KeyValuePipe when compareFn changes (#42821) |
| Commit | Description |
|---|---|
| b33665ab2c | fix(compiler): add mappings for all HTML entities (#42818) |
| 404c8d0d88 | fix(compiler): incorrect context object being referenced from listener instructions inside embedded views (#42755) |
| Commit | Description |
|---|---|
| 81dce5c664 | fix(compiler-cli): check split two way binding (#42601) |
| 4c482bf3f1 | fix(compiler-cli): properly emit literal types when recreating type parameters in a different file (#42761) |
| 30c82cd177 | fix(compiler-cli): inline type checking instructions no longer prevent incremental reuse (#42759) |
| 4c78984ad2 | fix(compiler-cli): support reflecting namespace declarations (#42728) |
| 74350a5cf1 | fix(compiler-cli): return directives for an element on a microsyntax template (#42640) |
| Commit | Description |
|---|---|
| cd2d82a91a | fix(core): associate the NgModule scope for an overridden component (#42817) |
| 51156f3f07 | fix(core): allow proper type inference when ngFor is used with a trackBy function (#42692) |
| 0f23f7343e | fix(core): error in TestBed if module is reset mid-compilation in ViewEngine (#42669) |
| Commit | Description |
|---|---|
| ffeea63f43 | fix(language-service): Do not override TS LS methods not supported by VE NgLS (#42727) |
| Commit | Description |
|---|---|
| cb2ca9a66e | fix(service-worker): correctly handle unrecoverable state when a client no longer exists (#42736) |
| f592a12005 | fix(service-worker): avoid storing redundant metadata for hashed assets (#42606) |
Alan Agius, Andrew Kushnir, Andrew Scott, Arthur Ming, Bastian, Borislav Ivanov, Daniel Trevino, David Gilson, David Shevitz, Gabriele Franchitto, George Kalpakas, Joey Perrott, JoostK, Kristiyan Kostadinov, Mark Goho, Meir Blumenfeld, Paul Gschwendtner, Pete Bacon Darwin, Ryan Andersen, Theoklitos Bampouris, behrooz bozorg chami, dario-piotrowicz, ivanwonder and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.2"></a>
| Commit | Description |
|---|---|
| 4a8ab4f149 | fix(bazel): enable dts bundling for Ivy packages (#42728) |
| Commit | Description |
|---|---|
| d654c7933a | fix(common): re-sort output of KeyValuePipe when compareFn changes (#42821) |
| Commit | Description |
|---|---|
| 2566cbb48c | fix(compiler): add mappings for all HTML entities (#42818) |
| 65330f03a9 | fix(compiler): incorrect context object being referenced from listener instructions inside embedded views (#42755) |
| Commit | Description |
|---|---|
| 17d3de25da | fix(compiler-cli): properly emit literal types when recreating type parameters in a different file (#42761) |
| 0a17e98ae2 | fix(compiler-cli): inline type checking instructions no longer prevent incremental reuse (#42759) |
| 45116097c1 | fix(compiler-cli): support reflecting namespace declarations (#42728) |
| df5cc1fbbf | fix(compiler-cli): return directives for an element on a microsyntax template (#42640) |
| Commit | Description |
|---|---|
| 63013546e1 | fix(core): associate the NgModule scope for an overridden component (#42817) |
| 9ebd41e39c | fix(core): allow proper type inference when ngFor is used with a trackBy function (#42692) |
| 41c6877c01 | fix(core): error in TestBed if module is reset mid-compilation in ViewEngine (#42669) |
| Commit | Description |
|---|---|
| 97c18f4527 | fix(language-service): Do not override TS LS methods not supported by VE NgLS (#42727) |
| Commit | Description |
|---|---|
| d87917542a | fix(service-worker): correctly handle unrecoverable state when a client no longer exists (#42736) |
| f2523a8fef | fix(service-worker): avoid storing redundant metadata for hashed assets (#42606) |
Alan Agius, Andrew Kushnir, Andrew Scott, Arthur Ming, Bastian, Borislav Ivanov, David Gilson, David Shevitz, Gabriele Franchitto, George Kalpakas, Joey Perrott, JoostK, Kristiyan Kostadinov, Mark Goho, Meir Blumenfeld, Paul Gschwendtner, Pete Bacon Darwin, Ryan Andersen, Theoklitos Bampouris, behrooz bozorg chami, dario-piotrowicz, ivanwonder and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.0-next.1"></a>
| Commit | Description |
|---|---|
| 9f5cc7c808 | feat(compiler): support number separators in templates (#42672) |
| Commit | Description |
|---|---|
| 37a740c659 | fix(compiler-cli): add support for partially evaluating types (#41661) |
| Commit | Description |
|---|---|
| 234b5edcc7 | fix(platform-browser): in Meta.addTag() do not add duplicate meta tags (#42703) |
Alan Agius, Alex Rickabaugh, Dario Piotrowicz, George Kalpakas, George Looshch, Joey Perrott, Kristiyan Kostadinov, Lars Gyrup Brink Nielsen, Paul Gschwendtner, Pete Bacon Darwin, Zach Arend, codebriefcase, dario-piotrowicz, marvinbeckert, mgechev and pavlenko
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.1"></a>
| Commit | Description |
|---|---|
| f6b828e292 | fix(compiler-cli): add support for partially evaluating types (#41661) |
| Commit | Description |
|---|---|
| d19ddd1a87 | fix(platform-browser): in Meta.addTag() do not add duplicate meta tags (#42703) |
Alan Agius, Dario Piotrowicz, George Kalpakas, George Looshch, Lars Gyrup Brink Nielsen, Paul Gschwendtner, Pete Bacon Darwin, Zach Arend, codebriefcase, dario-piotrowicz, marvinbeckert, mgechev and pavlenko
<!-- CHANGELOG SPLIT MARKER --><a name="12.2.0-next.0"></a>
This release contains the same set of changes as 12.1.0.
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.0"></a>
| Commit | Description |
|---|---|
| 9de65dbdce | fix(compiler): should not break a text token on a non-valid start tag (#42605) |
| c873440ad2 | fix(compiler): do not allow unterminated interpolation to leak into later tokens (#42605) |
| cc672f05bf | feat(compiler): add support for shorthand property declarations in templates (#42421) |
| f52df99fe3 | fix(compiler): generate view restoration for keyed write inside template listener (#42603) |
| Commit | Description |
|---|---|
| 874de59d35 | fix(compiler-cli): change default ngcc hash algorithm to be FIPS compliant (#42582) |
| 729eea5716 | fix(compiler-cli): transform type references in generic type parameter default (#42492) |
| Commit | Description |
|---|---|
| 873229f24b | feat(core): add opt-in test module teardown configuration (#42566) |
| Commit | Description |
|---|---|
| 07c1ddc487 | fix(router): error if module is destroyed before location is initialized (#42560) |
| Commit | Description |
|---|---|
| cc30dc0713 | fix(service-worker): ensure obsolete caches are always cleaned up (#42622) |
| 01128f5b5d | fix(service-worker): ensure caches are cleaned up when failing to load state (#42622) |
| 73b0275dc2 | fix(service-worker): improve ServiceWorker cache names (#42622) |
| 7507ed2e54 | fix(service-worker): use correct names when listing CacheDatabase tables (#42622) |
| 53fe557da7 | feat(service-worker): include ServiceWorker version in debug info (#42622) |
| d546501ab5 | feat(service-worker): add openWindow, focusLastFocusedOrOpen and navigateLastFocusedOrOpen (#42520) |
| 9498da1038 | fix(service-worker): correctly determine client ID on navigation requests (#42607) |
Alex Rickabaugh, Dale Harris, George Kalpakas, Joey Perrott, JoostK, Kristiyan Kostadinov, Németh Tamás, Paul Gschwendtner, Pete Bacon Darwin, Renovate Bot, Umair Hafeez, codingnuclei and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.0-next.6"></a>
| Commit | Description |
|---|---|
| 8c1e0e6ad0 | fix(compiler): always match close tag to the nearest open element (#42554) |
| Commit | Description |
|---|---|
| 22bda2226b | fix(compiler-cli): prevent prior compilations from being retained in watch builds (#42537) |
| Commit | Description |
|---|---|
| 3961b3c360 | fix(core): ensure that autoRegisterModuleById registration in ɵɵdefineNgModule is not DCE-ed by closure (#42529) |
| Commit | Description |
|---|---|
| 7180ec9e7c | fix(forms): changes to status not always being emitted to statusChanges observable for async validators. (#42553) |
| Commit | Description |
|---|---|
| 4001e9d808 | fix(language-service): 'go to defininition' for objects defined in template (#42559) |
| 228beeabd1 | fix(language-service): Use last child end span for parent without close tag (#42554) |
Ahmed Ayed, Alan Agius, Alex Rickabaugh, Andrew Scott, Ankit Choudhary, Aristeidis Bampakos, Daniel Trevino, Dario Piotrowicz, Dylan Hunn, George Kalpakas, Igor Minar, JiaLiPassion, JoostK, Kapunahele Wong, Kristiyan Kostadinov, Marius Bethge, Mladen Jakovljević, Paul Gschwendtner, Pete Bacon Darwin, Pham Huu Hien, Renovate Bot, dario-piotrowicz and gobika21f
<!-- CHANGELOG SPLIT MARKER --><a name="12.0.5"></a>
| Commit | Description |
|---|---|
| 89fc131ef8 | fix(compiler): always match close tag to the nearest open element (#42554) |
| Commit | Description |
|---|---|
| 60dbf017fb | fix(compiler-cli): prevent prior compilations from being retained in watch builds (#42537) |
| Commit | Description |
|---|---|
| 785da0f1bf | fix(core): ensure that autoRegisterModuleById registration in ɵɵdefineNgModule is not DCE-ed by closure (#42529) |
| Commit | Description |
|---|---|
| 6f1b907b79 | fix(forms): changes to status not always being emitted to statusChanges observable for async validators. (#42553) |
| Commit | Description |
|---|---|
| 8192f1e1c2 | fix(language-service): 'go to defininition' for objects defined in template (#42559) |
| 11e0f53352 | fix(language-service): Use last child end span for parent without close tag (#42554) |
Ahmed Ayed, Alan Agius, Andrew Scott, Ankit Choudhary, Aristeidis Bampakos, Daniel Trevino, Dario Piotrowicz, Dylan Hunn, George Kalpakas, Igor Minar, JiaLiPassion, JoostK, Kapunahele Wong, Kristiyan Kostadinov, Marius Bethge, Pete Bacon Darwin, Pham Huu Hien, dario-piotrowicz and gobika21
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.0-next.5"></a>
| Commit | Description |
|---|---|
| 85c7f7691e | fix(common): infer correct type when trackBy is used in ngFor (#41995) |
| 374fa2c26f | fix(common): initialize currencyCode in currencyPipe (#40505) |
| Commit | Description |
|---|---|
| afd68e5674 | feat(compiler): emit diagnostic for shadow dom components with an invalid selector (#42245) |
| ba084857ea | feat(compiler): support safe keyed read expressions (#41911) |
| Commit | Description |
|---|---|
| bd1836b999 | fix(compiler-cli): exclude type-only imports from cycle analysis (#42453) |
| Commit | Description |
|---|---|
| 25f763cff8 | feat(core): support TypeScript 4.3 (#42022) |
| Commit | Description |
|---|---|
| 47270d9e63 | feat(forms): add ng-submitted class to forms that have been submitted. (#42132) |
| 751cd83ae3 | fix(forms): the min and max validators should work correctly with 0 as a value (#42412) |
| Commit | Description |
|---|---|
| a493ea9bcb | fix(language-service): fix autocomplete info display for some cases (#42472) |
| fe22c2b0b6 | fix(language-service): Correct rename info for pipe name expressions (#41974) |
| Commit | Description |
|---|---|
| c44ab4f6da | fix(router): fix serializeQueryParams logic (#42481) |
Alex, Alex Inkin, Andrew Kushnir, Andrew Scott, Chris, David Shevitz, Dylan Hunn, George Kalpakas, Gourav102, Igor Minar, Jessica Janiuk, Joey Perrott, JoostK, Kapunahele Wong, Kristiyan Kostadinov, MarsiBarsi, MrJithil, Paul Gschwendtner, Pete Bacon Darwin, Renovate Bot, Sam Severance, Santosh Yadav, Teri Glover, Tiago Temporin, Vahid Mohammadi, anups1, cindygk, iRealNirmal, kuncevic and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="12.0.4"></a>
| Commit | Description |
|---|---|
| 200cc31df4 | fix(common): infer correct type when trackBy is used in ngFor (#41995) |
| 0dad375de7 | fix(common): initialize currencyCode in currencyPipe (#40505) |
| Commit | Description |
|---|---|
| b6d6a34eef | fix(compiler-cli): exclude type-only imports from cycle analysis (#42453) |
| Commit | Description |
|---|---|
| 50c87e86b6 | fix(forms): the min and max validators should work correctly with 0 as a value (#42412) |
| Commit | Description |
|---|---|
| 34dd3c360b | fix(language-service): fix autocomplete info display for some cases (#42472) |
| Commit | Description |
|---|---|
| a77ec5bcab | fix(router): fix serializeQueryParams logic (#42481) |
Alex, Alex Inkin, Andrew Kushnir, Andrew Scott, Chris, David Shevitz, George Kalpakas, Gourav102, Igor Minar, Joey Perrott, JoostK, Kapunahele Wong, Kristiyan Kostadinov, MarsiBarsi, MrJithil, Paul Gschwendtner, Pete Bacon Darwin, Sam Severance, Santosh Yadav, Teri Glover, Tiago Temporin, Vahid Mohammadi, anups1, cindygk, iRealNirmal, kuncevic and mgechev
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.0-next.4"></a>
| Commit | Description |
|---|---|
| e039075a28 | fix(compiler-cli): better detect classes that are indirectly exported (#42207) |
AleksanderBodurri, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, David Pfeiffer, David Shevitz, Doug Parker, Dylan Hunn, George Kalpakas, Igor Minar, Joey Perrott, JoostK, Kristiyan Kostadinov, Renovate Bot, Sam Severance, Serguei Cambour, Suguru Inatomi, Teri Glover, Wagner Maciel, Zach Arend, mgechev and 不肖・高橋
<!-- CHANGELOG SPLIT MARKER --><a name="12.0.3"></a>
| Commit | Description |
|---|---|
| 8bdcca1e08 | fix(compiler-cli): better detect classes that are indirectly exported (#42207) |
AleksanderBodurri, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, David Pfeiffer, David Shevitz, Doug Parker, Dylan Hunn, George Kalpakas, Igor Minar, Joey Perrott, JoostK, Kristiyan Kostadinov, Sam Severance, Serguei Cambour, Suguru Inatomi, Teri Glover, Wagner Maciel, Zach Arend, mgechev and 不肖・高橋
<!-- CHANGELOG SPLIT MARKER --><a name="12.0.2"></a>
| Commit | Description |
|---|---|
| 19d7bf4162 | fix(forms): Add float number support for min and max validator (#42223) |
| Commit | Description |
|---|---|
| 11c7bec065 | fix(migrations): add migration to replace /deep/ with ::ng-deep (#42214) |
| Commit | Description |
|---|---|
| 84ab81c286 | fix(platform-browser): update started state on reset (#41608) |
Alan Agius, Andrew Scott, David Shevitz, George Kalpakas, Igor Minar, Joey Perrott, Kapunahele Wong, Madleina Scheidegger, Paul Gschwendtner, Pete Bacon Darwin, Sam Severance, Teri Glover, Zach Arend, chenyunhsin, iRealNirmal, mgechev and twerske
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.0-next.3"></a>
| Commit | Description |
|---|---|
| 3d9062dad7 | fix(forms): Add float number support for min and max validator (#42223) |
| Commit | Description |
|---|---|
| 7f6213a2f4 | fix(migrations): add migration to replace /deep/ with ::ng-deep (#42214) |
| Commit | Description |
|---|---|
| 3a6af8e629 | fix(platform-browser): update started state on reset (#41608) |
Alan Agius, Andrew Scott, David Shevitz, George Kalpakas, Igor Minar, Joey Perrott, Kapunahele Wong, Madleina Scheidegger, Paul Gschwendtner, Pete Bacon Darwin, Renovate Bot, Sam Severance, Teri Glover, Zach Arend, chenyunhsin, iRealNirmal, mgechev and twerske
<!-- CHANGELOG SPLIT MARKER --><a name="12.1.0-next.2"></a>
| Commit | Description |
|---|---|
| 4bc3cf216d | feat(common): add URLSearchParams to request body (#37852) |
| Commit | Description |
|---|---|
| 1be5d659a5 | fix(language-service): fully de-duplicate reference and rename results (#40523) |
| a86ca4fe04 | feat(language-service): Enable renaming of pipes (#40523) |
Ajit Singh, Alan Agius, Alan Cohen, Alex Rickabaugh, Amadou Sall, Andrew J Asche, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Ben Lesh, Bendik Skarpnes, Benjamin Kindle, Charles Lyding, Chau Tran, Cosmin Ababei, Daniel Díaz, David Shevitz, Dharmen Shah, Dmitrij Kuba, Dylan Hunn, Eduard Bondarenko, Emily Wenberg, Front-end developer, George Kalpakas, Georgii Dolzhykov, Gopal Jayaraman, Gourav102, Gérôme Grignon, Hugo Mejia, Igor Minar, Jesse Palmer, Jessica Janiuk, JiaLiPassion, Joey Perrott, JoostK, Julien Marcou, Kapunahele Wong, Keen Yee Liau, Kirk Larkin, Kristiyan Kostadinov, Lars Gyrup Brink Nielsen, Martin Sikora, Mathias Schäfer, Michael Hladky, Mikhail, Misko Hevery, MrJithil, Nishu Goel, Oluwole Majiyagbe, Paul Gschwendtner, Paul Muriel Biya-Bi, Pete Bacon Darwin, Pierre Portejoie, Richard Sithole, Sagar Pandita, Sam Severance, Sumit Arora, Talha Azhar, Teri Glover, Wojciech Okoński, Zach Arend, Zack DeRose, aschaap, cexbrayat, iRealNirmal, iron, jeripeierSBB, mgechev, nirmal bhagwani, pavlenko, profanis, rachid Oussanaa, sovtara, unknown, va-stefanek and wagnermaciel
<!-- CHANGELOG SPLIT MARKER --><a name="12.0.1"></a>
| Commit | Description |
|---|---|
| 28ee9864a4 | fix(benchpress): update the check for start and end events (#42085) |
| Commit | Description |
|---|---|
| 52c07e403e | fix(compiler): unclear lexer error when using private identifier in expressions (#42027) |
| Commit | Description |
|---|---|
| 3a46ad96ea | fix(core): global listeners not being bound on non-node host elements (#42014) |
| Commit | Description |
|---|---|
| 9b90c03a9f | fix(forms): registerOnValidatorChange should be called for ngModelGroup. (#41971) |
Alex Rickabaugh, Daniel Díaz, David Shevitz, Dylan Hunn, Front-end developer, George Kalpakas, Joey Perrott, Kristiyan Kostadinov, Lars Gyrup Brink Nielsen, MrJithil, Paul Gschwendtner, Renovate Bot, Sam Severance, Sumit Arora, iRealNirmal, iron, mgechev, rachid Oussanaa and wagnermaciel
<!-- CHANGELOG SPLIT MARKER --><a name="12.0.0"></a>
Blog post "Angular v12 is now available".
XhrFactory (#41393) (7dfa446)@font-face rules (#41815) (2a11cda), closes #41751:host-context() selectors (#40494) (07b7af3), closes #19199ts.Programs correctly (#41291) (deacc74)rootDirs to absolute (#41359) (3e0fda9), closes #36290useInlining option to type check config (#41043) (09aefd2), closes #40963readConfiguration existing options should override options in tsconfig (#40694) (b7c4d07)angularCompilerOptions in tsconfig from node (#40694) (5eb1954), closes #36715emitDistinctChangesOnlyDefaultValue to true (#41121) (7096246)XhrFactory to use BrowserXhr (#41313) (e0028e5), closes #41311historyGo method to Location service (#38890) (e05a6f3)DatePipe (#40766) (c56ecab), closes #26922appendAll() method on HttpParams (#20930) (575a2d1), closes #20798forwardRef in providedIn of Injectable declaration (#41426) (f7c294e), closes #41205XhrFactory import (#41313) (95ff5ec)APP_INITIALIZER token (#40986) (ca721c2), closes #40729emitEvent option for AbstractControl-based class methods (#31031) (4ec045e), closes #29662getRenameInfo (#40439) (4e8198d)findRenameLocations (#40140) (9a5ac47)__read helper as used by TypeScript 4.2 (#41201) (66e9970)__spreadArray helper as used by TypeScript 4.2 (#41201) (7b1214e) #40394routerLinkActiveOptions (#40303) (6c05c80), closes #13205absoluteFromSourceFile (#41475) (fab1a64)PlatformLocation class, namely onPopState and onHashChange,
used to return void. Now those methods return functions that can be called
to remove event handlers.HttpParams class now accept string | number | boolean
instead of string for the value of a parameter.
If you extended this class in your application,
you'll have to update the signatures of your methods to reflect these changes.localize-migrate command line tool.ng.getDirectives function threw an error in case a
given DOM node had no Angular context associated with it (for example
if a function was called for a DOM element outside an Angular app).
This behavior was inconsistent with other debugging utilities under ng
namespace, which handled this situation without raising an exception.
Now calling the ng.getDirectives function for such DOM nodes would
result in an empty array returned from that function.emitDistinctChangesOnlyDefaultValue
which changes the default behavior and may cause some applications which
rely on the incorrect behavior to fail.emitDistinctChangesOnly flag has also been deprecated and will be
removed in a future major release.
The previous implementation would fire changes QueryList.changes.subscribe
whenever the QueryList was recomputed. This resulted in an artificially
high number of change notifications, as it is possible that recomputing
QueryList results in the same list. When the QueryList gets recomputed
is an implementation detail, and it should not be the thing that determines
how often change event should fire.
Unfortunately, fixing the behavior outright caused too many existing
applications to fail. For this reason, Angular considers this fix a
breaking fix and has introduced a flag in @ContentChildren and
@ViewChildren, that controls the behavior.
export class QueryCompWithStrictChangeEmitParent {
@ContentChildren('foo', {
// This option is the new default with this change.
emitDistinctChangesOnly: true,
})
foos!: QueryList<any>;
}
For backward compatibility before v12
emitDistinctChangesOnlyDefaultValue was set to false. This change the default to true.
APP_INITIALIZER token has been changed to more accurately
reflect the types of return values that are handled by Angular. Previously,
each initializer callback was typed to return any, this is now
Promise<unknown> | Observable<unknown> | void. In the unlikely event that
your application uses the Injector.get or TestBed.inject API to inject
the APP_INITIALIZER token, you may need to update the code to account for
the stricter type.Additionally, TypeScript may report the TS2742 error if the APP_INITIALIZER
token is used in an expression of which its inferred type has to be emitted
into a .d.ts file. To work around this, an explicit type annotation is needed,
which would typically be Provider or Provider[].
core: Minimum supported zone.js version is 0.11.4
forms: The emitEvent option was added to the following FormArray and FormGroup methods:
FormGroup.addControl
FormGroup.removeControl
FormGroup.setControl
FormArray.push
FormArray.insert
FormArray.removeAt
FormArray.setControl
FormArray.clear
If your app has custom classes that extend FormArray or FormGroup classes and override the
above-mentioned methods, you may need to update your implementation to take the new options into
account and make sure that overrides are compatible from a types perspective.
min and max attributes defined on the <input type="number">
were ignored by Forms module. Now presence of these attributes would
trigger min/max validation logic (in case formControl, formControlName
or ngModel directives are also present on a given input) and
corresponding form control status would reflect that.XhrFactory has been moved from @angular/common/http to @angular/common.Before
import {XhrFactory} from '@angular/common/http';
After
import {XhrFactory} from '@angular/common';
RouterLinkActive.routerLinkActiveOptions input was
expanded to allow more fine-tuned control. Code that previously read
this property may need to be updated to account for the new type.<a name="11.2.14"></a>
| Commit | Description |
|---|---|
| 5bb7c0ef3a | fix(core): do not retain dynamically compiled components and modules (#42003) |
| 40cc29aa6e | fix(core): invoke profiler around ngOnDestroy lifecycle hooks (#41969) |
| Commit | Description |
|---|---|
| f66c9ae749 | fix(platform-browser): prevent memory leak of style nodes if shadow DOM encapsulation is used (#42005) |
Alex Rickabaugh, Andrew J Asche, Georgii Dolzhykov, Joey Perrott, Joost Koehoorn, Julien Marcou, Kapunahele Wong, Pete Bacon Darwin, Richard Sithole, Teri Glover, iRealNirmal, Minko Gechev, profanis and va-stefanek
$ (#41567) (1758d02), closes #41244 #41500 #41500ng.getDirectives function threw an error in case a
given DOM node had no Angular context associated with it (for example
if a function was called for a DOM element outside an Angular app).
This behavior was inconsistent with other debugging utilities under ng
namespace, which handled this situation without raising an exception.
Now calling the ng.getDirectives function for such DOM nodes would
result in an empty array returned from that function.localize-migrate command line tool.[@font-face](https://github.com/font-face) rules (#41815) (de39b49), closes #41751tslib (#41480) (8d005e5), closes 11.2.8/src/api-extractor/index.js#L20:host selectors (#41261) (f358d6b), closes #41237useInlining option to type check config (#41268) (57644e9), closes #40963equiv-text values (#41180) (ed6c09a), closes #41176Validators class (#41189) (#41220) (804b6b6)FormBuilder class tree-shakable (#41126) (ffc93e0)RadioControlRegistry class tree-shakable (#41126) (6414590)readConfiguration existing options should override options in tsconfig (#40694) (#41036) (2f3e2df)angularCompilerOptions in tsconfig from node (#40694) (#41036) (e3ccd56), closes /github.com/microsoft/TypeScript/blob/b346f5764e4d500ebdeff7086e43690ea533a305/src/compiler/commandLineParser.ts#L2603-L2628 #36715ngDevMode to tree-shake warning (#40876) (c8a2e3a)<a name="11.2.1"></a>
:host-context and :host in the same selector (#40494) (ab8ea87), closes #14349:host-context() selectors (#40494) (c20e304), closes #19199:host-context() (#40494) (fb0ce21)<a name="11.2.0"></a>
<a name="11.2.0-rc.0"></a>
This release contains the same set the of changes as 11.2.0-next.1.
<!-- CHANGELOG SPLIT MARKER --><a name="11.2.0-next.1"></a>
YYYY-MM strings as UTC dates (#40620) (4c5f18d), closes #33944YYYY strings as UTC dates (#40629) (46d4326), closes #33944 #40620$implicit when empty (#40583) (9d396f8)T of EventEmitter<T> can be inferred (#40644) (5c54767), closes #40637<a name="11.1.2"></a>
YYYY-MM strings as UTC dates (#40620) (cafd4f5), closes #33944YYYY strings as UTC dates (#40629) (b823049), closes #33944 #40620$implicit when empty (#40583) (5dab521)T of EventEmitter<T> can be inferred (#40644) (8f9ba8e), closes #40637<a name="11.1.1"></a>
Map rather than object for map of partial linkers (#40563) (33e0f2b)ngDevMode (#40476) (4bb38c9)patchValue() method of FormGroup and FormArray classes to skip null values (#40534) (2fab148), closes #36672 #21021<a name="11.1.0"></a>
HttpParamsOptions to the public api (#35829) (b33b89d), closes #20276KeySpan for animation events and properties (#40347) (524415e)ngDevMode to false when calling enableProdMode() (#40124) (70b4816)Attribute DI decorator in deps section of a token (#37085) (f5cbf0b), closes #36479NgModule (#39981) (5fc4508), closes #25015 #11309 #18554onError when the root view is removed (#39940) (5a3a154)QueryList should not fire changes if the underlying list did not change. (#40091) (76f3633)ngDevMode to tree-shake warning (#39964) (9ebe423)ngDevMode to tree-shake warnings (#39964) (f022efa)ngDevMode to tree-shake checkNoChanges (#39964) (e1fe9ec)ngDevMode to tree-shake warnings (#39959) (8b0cccc)useFactory deps config (#40145) (0664d75), closes #40143ngDevMode to tree-shake _ngModelWarning (#39964) (7954c8d)Route configs (#40067) (805b4f9)relativeTo as an input to routerLink (#39720) (112324a), closes #13523<a name="11.0.9"></a>
<a name="11.0.8"></a>
<form> tag correctly in NgControlStatusGroup directive (#40344) (b3f322f), closes #38391Object.values to avoid the need for a polyfill (#40370) (c44dd84)<a name="11.0.7"></a>
Object.entries to avoid the need for a polyfill (#40340) (6429be1)<a name="11.0.6"></a>
\r\n line-endings correctly in source-mapping (#40187) (b865b32), closes #40169 #39654onDestroy in production mode as well (#40120) (632fe60), closes #39876 #40105useFactory arguments (#40122) (#40313) (45838c0)<a name="11.0.5"></a>
ngDevMode to false when calling enableProdMode() (#40124) (922f492)<a name="11.0.4"></a>
onError when the root view is removed (#39940) (35309bb)ngDevMode to tree-shake warning (#39964) (72aad32)ngDevMode to tree-shake warnings (#39964) (bf3de9b)ngDevMode to tree-shake checkNoChanges (#39964) (2fbb684)ngDevMode to tree-shake warnings (#39959) (1e3534f)ngDevMode to tree-shake _ngModelWarning (#39964) (735556d)<a name="11.0.3"></a>
Attribute DI decorator in deps section of a token (#37085) (aaa3111), closes #36479<a name="11.0.2"></a>
<a name="11.0.1"></a>
<a name="11.0.0"></a>
Blog post "Version 11 of Angular Now Available".
--stamp flag is used (#39392) (84e09a0)DatePipe (#38009) (26f2820), closes #37989params and reportProgress options to HttpClient.put() overload (#37873) (dd8d8c8), closes #23600KeyValuePipe (#37447) (4dfe0fa)AsyncPipe (#37447) (5f815c0)I18nPluralPipe (#37447) (3b919ef)SlicePipe (#37447) (4744c22)null (#37447) (c7d5555), closes #36259r -> Y (#39495) (feda78e)this.$event and this.$any accesses in expressions (#39323) (a8e0db7), closes #30278let statements in ES2015+ mode (#38775) (123bff7)setClassMetadata call in ES5 for class with custom decorator (#39527) (b0bbc1f), closes #39509fullTemplateTypeCheck is disabled (#39320) (67ea7b6), closes #38195CollectionChangeRecord symbol (#38668) (fdea180)TestBed is not instantiated before override provider (#38717) (c8f056b)createNamedArrayType() (#39209) (f6d5cdf)ngDevMode for undefined. (#36055) (f541e5f)ngDevMode is undeclared (#39415) (cc32932)LView rather than in TView (#39233) (0992b67), closes #37021 #38144 #38073markDirty() should only mark flags when really scheduling tick. (#39316) (3b6497b), closes #39296SkipSelf (#39464) (7cb9e19)OnPush component when inputs change (#39452) (dd28855), closes #38948statusChanges on subsequent value update/validations (#38354) (d9fea85), closes #20424 #14542NG_VALUE_ACCESSOR injection token as array (#29723) (2b1b718), closes #29351null in .parent of abstract control (#32671) (f4f1bcc), closes #16999BoundAttribute (#38995) (323be39)baseUrl (#39334) (b4e8399)shouldReuseRoute (#26949) (3817e5f), closes #16192relativeLinkResolution to corrected by default (#25609) (837889f)ExtraOptions to Router in RouterTestingModule (#39096) (d8c0534), closes #23347routerLink (#39151) (b0b4953)preserveQueryParams (#38762) (93ee05d)preserveQueryParams symbol (#38762) (783a5bd)createUrlTree (#39347) (161b278)formatDate (#38828) (984ed39)DatePipe (#37447) (daf8b7f)keySpan to Variable node (#38965) (239968d)TemplateTypeChecker operation to get Symbol from a template node (#38618) (c4556db)Symbol of Templates and Elements in component template (#38618) (cf2e8b9)Symbol of AST expression in component template (#38618) (f56ece4)TemplateTypeChecker (#38618) (9e77bd3)async with waitForAsync (#39212) (5ce71e0)ViewEncapsulation.Native (#38882) (0e733f3)initialNavigation schematic (#36926) (0ec7043)Function constructor (#39209) (5913e5c)ViewEncapsulation.Native (#38882) (4a1c12c)AbstractControl.parent accesses (#39009) (aeec223), closes #32671getDefinitionAndBoundSpan (go to definition) (#39101) (3975dd9)getSemanticDiagnostics for external templates (#39065) (63624a2)getTypeDefinitionAtPosition (go to type definition) (#39145) (a84976f)navigateByUrl and createUrlTree with invalid parameters (#38825) (7849fdd)relativeLinkResolution migration to update default value (#38698) (15ea811)initialNavigation options to replace legacy (#37480) (c4becca)UnrecoverableStateError (#36847) (036a2fa), closes #36539ngDevMode to tree-shake error messages in router (#38674) (db21c4f)sort(), push(), splice(), etc.) then your code will no longer compile.
If you need to mutate the array, you should now make a copy (e.g. by calling slice()) and mutate the copy.DatePipe in a format that contains fractions of a millisecond, the milliseconds will now always be rounded down rather than to the nearest millisecond.
Most applications will not be affected by this change.
If this is not the desired behaviour then consider pre-processing the string to round the millisecond part before passing it to the DatePipe.slice pipe now returns null for the undefined input value, which is consistent with the behavior of most pipes.
If you rely on undefined being the result in that case, you now need to check for it explicitly.keyvalue pipe has been fixed to report that for input objects that have number keys, the result will contain the string representation of the keys.
This was already the case and the types have simply been updated to reflect this.
Please update the consumers of the pipe output if they were relying on the incorrect types.
Note that this does not affect use cases where the input values are Maps, so if you need to preserve numbers, this is an effective way.date pipe now explicitly states which types are accepted.
This should only cause issues in corner cases, as any other values would result in runtime exceptions.async pipe no longer claims to return undefined for an input that was typed as undefined.
Note that the code actually returned null on undefined inputs.
In the unlikely case you were relying on this, please fix the typing of the consumers of the pipe output.null and undefined to null and raise an exception on invalid input (0, false, NaN) just like most "common pipes".
If your code required falsy values to pass through, you need to handle them explicitly.CollectionChangeRecord has been removed, use IterableChangeRecord instead.TestBed.overrideProvider after TestBed initialization, provider overrides are not applied.
This behavior is consistent with other override methods (such as TestBed.overrideDirective, etc.) but they throw an error to indicate that, when the check was missing in the TestBed.overrideProvider function.
Now calling TestBed.overrideProvider after TestBed initialization also triggers an error, thus there is a chance that some tests (where TestBed.overrideProvider is called after TestBed initialization) will start to fail and require updates to move TestBed.overrideProvider calls before TestBed initialization is completed.ViewEncapsulation.Native has been removed. Use ViewEncapsulation.ShadowDom instead.
Existing usages will be updated automatically by ng update.FormControl, FormGroup and FormArray class instances had async validators defined at initialization time, the status change event was not emitted once async validators completed.
After this change the status event is emitted into the statusChanges observable.
If your code relies on the old behavior, you can filter/ignore this additional status change event.@angular/forms package used to have any[] as a type of validators and asyncValidators arguments in constructors.
Now these arguments are properly typed, so if your code relies on directive constructor types it may require some updates to improve type safety.AbstractFormControl.parent now includes null.
null is now included in the types of .parent.
If you don't already have a check for this case, the TypeScript compiler might complain.
A v11 migration exists which adds the non-null assertion operator where necessary.
In an unlikely case your code was testing the parent against undefined with strict equality, you'll need to change this to === null instead, since the parent is now explicitly initialized with null instead of being left undefined.useAbsoluteUrl to set up platform-server, you now need to also specify baseUrl.
We are intentionally making this a breaking change in a minor release, because if useAbsoluteUrl is set to true then the behavior of the application could be unpredictable, resulting in issues that are hard to discover but could be affecting production environments.RouteReuseStrategy#shouldReuseRoute.
Previously, when evaluating child routes, they would be called with the future and current arguments would be swapped.
If your RouteReuseStrategy relies specifically on only the future or current snapshot state, you may need to update the shouldReuseRoute implementation's use of "future" and "current" ActivatedRouteSnapshots.NavigationExtras to be passed in, they will not allow object literals, as they may only specify known properties.
They will also not accept types that do not have properties in common with the ones in the Pick.
To fix this error, only specify properties from the NavigationExtras which are actually used in the respective function calls or use a type assertion on the object or variable: as NavigationExtras.relativeLinkResolution from 'legacy' to 'default'.
If your application previously used the default by not specifying a value in the ExtraOptions and uses relative links when navigating from children of empty path routes, you will need to update your RouterModule to specifically specify 'legacy' for relativeLinkResolution.
See https://angular.io/api/router/ExtraOptions#relativeLinkResolution for more details.initialNavigation property for the options in RouterModule.forRoot no longer supports legacy_disabled, legacy_enabled, true, or false as valid values.
legacy_enabled (the old default) is instead enabledNonBlocking.enabled is deprecated as a valid value for the RouterModule.forRoot initialNavigation option.
enabledBlocking has been introduced to replace it.preserveQueryParams has been removed, use queryParamsHandling: "preserve" instead.RouterLink values of queryParams, fragment or queryParamsHandling you might need to relax the typing to also accept undefined and null.navigateByUrl and createUrlTree to be more accurate (#38227) (e4f4d18), closes #18798<a name="10.2.3"></a>
<a name="10.2.2"></a>
fullTemplateTypeCheck is disabled (#39320) (71d0063), closes #38195<a name="10.2.1"></a>
ngDevMode is undeclared (#39415) (fcebc83)<a name="10.2.0"></a>
ngDevMode for undefined. (#36055) (02405f1)useAbsoluteUrl to setup platform-server, you now need to
also specify baseUrl.
We are intentionally making this a breaking change in a minor release,
because if useAbsoluteUrl is set to true then the behavior of the
application could be unpredictable, resulting in issues that are hard to
discover but could be affecting production environments.<a name="10.1.6"></a>
exports to the current module in UMD files (#38959) (#39272) (13c4a7b)<a name="10.1.5"></a>
<a name="10.1.4"></a>
<a name="10.1.3"></a>
ChangeDetectorRef in pipe constructors (#38892) (093c3a1), closes #38666 #38883<a name="10.1.2"></a>
RefreshTransplantedView when detached (#38768) (edb7f90), closes #38619formatOptions is optional (#38787) (a47383d)<a name="10.1.1"></a>
tView between tests in Ivy TestBed (#38659) (efc7606), closes #38600[@angular](https://github.com/angular)/localize in devDependencies by default (#38680) (dbab744), closes #38329<a name="10.1.0"></a>
SourceFile.getOriginalLocation() to sourcemaps package (#32912) (6abb8d0)async to waitAsync. (#37583) (8fbf40b)canParse() diagnostics (#37909) (ec32eba), closes #37901sms-URLs (#31463) (fc5c34d), closes #31462NgIf context variables in template type checker (#36627) (9c8bc4a)NgModuleFactory construction as not side effectful (#38147) (7f8c222)consts field of ComponentDef (#38404) (cb05c01)ngDevMode flag to tree-shake error messages in prod builds (#37821) (201a546), closes #37697EntryPointManifest to speed up noop ProgramBaseEntryPointFinder (#37665) (9318e23)<a name="10.0.14"></a>
<a name="10.0.12"></a>
<a name="10.0.11"></a>
<a name="10.0.10"></a>
<a name="10.0.9"></a>
NgModuleFactory construction as not side effectful (#38320) (016a41b), closes #38147LView (#38345) (ee5123f)<a name="10.0.8"></a>
<a name="10.0.7"></a>
<a name="10.0.6"></a>
Attribute decorator attributeName is mandatory (#38131) (1c4fcce), closes #32658<a name="10.0.5"></a>
<a name="10.0.4"></a>
ngsw/state with a non-root SW scope (#37922) (dc42c97), closes #30505<a name="10.0.3"></a>
<a name="9.1.12"></a>
<a name="10.0.2"></a>
<a name="10.0.1"></a>
selectedOptions (#37620) (dfb58c4), closes #37433RouterLinkActive should run CD when setting isActive (#21411) (a8ea817), closes #15943 #19934<a name="10.0.0"></a>
Blog post "Version 10 of Angular Now Available".
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the v10 release announcement.
module points to esm2015 output (#36944) (c98a4d6)FileWriter (#36626) (772ccf0)CacheQueryOptions options in ngsw-config (#34663) (dc9f4b9), closes #28443registerWhenStable SW registration strategy (#35870) (00efacf), closes #34464ignoreVary: true when retrieving responses from cache (#34663) (ee35e22), closes #36638locales/global/*.js are not ES5 compliant (#36342) (078b0be), closes angular/angular-cli#16394KeyValuePipe accept type unions with null (#36093) (d783519), closes #35743isCaseSensitive() returns correct value (#36859) (fc4741f)$localize messages (#36989) (4e1b5e4)MockFileSystem handles case-sensitivity (#36859) (26eacd4)getRootDirs() handles case-sensitivity (#36859) (3f3e9b7)@Input (#35889) (cda2530), closes #35383@NgModule classes (#36369) (28995db), closes #35700APP_INITIALIZERs before accessing LOCALE_ID token in Ivy TestBed (#36237) (1649743), closes #36230undefined (#36140) (9ba46d9)SimpleChange#firstChange for pre-existing inputs (#36140) (b14ac96), closes #36130[@angular](https://github.com/angular)/core module (#36783) (dd049ca)HtmlAst to get the span of HTML tag (#36371) (81195a2)} (#36123) (fced8ee), closes #31586getLocation() works (#36853) (70b25a3)viaModule should be null for local imports (#36989) (d268d2a)node_modules/ (#36559) (6ab43d7), closes #36526node_modules/ (#37040) (9ade1c3)package.json (#37040) (11c0402)paths mapping does not exist (#36525) (717df13), closes #36518EsmDependencyHost (#37075) (c6872c0)ENOMEM errors in worker processes (#36626) (4779c4b)main property for ESM5 format (#36396) (2463548), closes #35788defineProperty() re-exports in CommonJS and UMD (#36989) (91092f6)browser property in entry-points (#36396) (6b3aa60), closes #36062xhr2 dependency (#36366) (b59bc0e), closes #36358getBasePaths() computation (#36881) (e037840)@angular/compiler-cli now requires:
The support for Closure Compiler in Angular packages has been experimental and broken for quite some time.
As of TS3.9, Closure is unusable with the JavaScript emit. Please follow https://github.com/microsoft/TypeScript/issues/38374 for more information and updates.
If you used Closure Compiler with Angular in the past, you will likely be better off consuming Angular packages built from sources directly rather than consuming the version we publish on npm, which is primarily optimized for Webpack/Rollup + Terser build pipeline.
As a temporary workaround, you might consider using your current build
pipeline with Closure flag --compilation_level=SIMPLE. This flag
will ensure that your build pipeline produces buildable and
runnable artifacts, at the cost of increased payload size due to
advanced optimizations being disabled.
If you were affected by this change, please help us understand your needs by leaving a comment on https://github.com/angular/angular/issues/37234.
A generic type parameter has always been required for the ModuleWithProviders pattern to work with Ivy, but prior to this commit, View Engine allowed the generic type to be omitted (though support was officially deprecated).
If you're using ModuleWithProviders without a generic type in your application code, a v10 migration will update your code for you.
However, if you are using View Engine and also depending on a library that omits the generic type, you will now get a build time error similar to:
error TS2314: Generic type 'ModuleWithProviders<T>' requires 1 type argument(s).
In this case, ngcc won't help you (because it's Ivy-only) and the migration only covers application code. You should contact the library author to fix their library to provide a type parameter when they use this class.
As a workaround, we suggest setting skipLibChecks to false in your tsconfig or updating your app to use Ivy.
change event.Tests which trigger change events need to be updated to trigger input events instead.
The change event was in place to support IE9, as we found that input events were not fired with backspace or cut actions. If you need to maintain IE9 support, you will need to add a change event listener to number inputs and call the onChange method of NumberValueAccessor manually.
Lastly, old versions of WebDriver would synthetically trigger the change event on WebElement.clear and WebElement.sendKeys. If you are using an old version of WebDriver, you may need to update tests to ensure input events are triggered. For example, you could use element.sendKeys(Keys.chord(Keys.CONTROL, "a"), Keys.BACK_SPACE); in place of element.clear().
minLength and maxLength validators now verify that the form control's value has a
numeric length property, and only validate for length if that's the case.Previously, falsey values without the length property (such as 0 or
false values) were triggering validation errors. If your code relies on
the old behavior, you can include other validators such as min or
requiredTrue to the list of validators for a particular field.
If you are not using Angular CLI to build your application or library, and you need to be able to build es5 artifacts, then you will need to downlevel the distributed Angular code to es5 on your own.
Angular CLI will automatically downlevel the code to es5 if differential loading is enabled in the Angular project, so no action is required from Angular CLI users.
console.error.Now, Vary headers are ignored when retrieving resources from the
ServiceWorker caches, which can result in resources being retrieved even
when their headers are different. If your application needs to
differentiate its responses based on request headers, please make sure
the Angular ServiceWorker is configured
to avoid caching the affected resources.
Additionally, [val]=(observable | async).someProperty will no longer
trigger change detection if the value of someProperty is identical to
the value in the previous emit. If you need to force change detection,
either update the binding to use an object whose reference changes or
subscribe to the observable and call markForCheck as needed.
common: format day-periods that cross midnight
When formatting a time with the b or B format codes, the rendered
string was not correctly handling day periods that spanned midnight.
Instead the logic was falling back to the default case of AM.
Now the logic has been updated so that it matches times that are within
a day period that spans midnight, so it will now render the correct
output, such as at night in the case of English.
Applications that are using either formatDate() or DatePipe and any
of the b or B format codes will be affected by this change.
router: UrlMatcher's type now reflects that it could always return null.
If you implemented your own Router or Recognizer class, please update it to handle matcher returning null.
<a name="9.1.11"></a>
<a name="9.1.10"></a>
<a name="9.1.9"></a>
This release contains a re-submit of the following 3 commits with fixes for TS 3.8.
<a name="9.1.8"></a>
@Input (#35889) (f872b69), closes #35383<a name="9.1.7"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="9.1.6"></a>
<a name="9.1.5"></a>
isCaseSensitive() returns correct value (#36968) (4becc1b)getRootDirs() handles case-sensitivity (#36968) (5bddeea)MockFileSystem handles case-sensitivity (#36968) (b6c042d)getLocation() works (#36920) (701016d)ENOMEM errors in worker processes (#36626) (901b980)getBasePaths() computation (#36881) (b6d0e21)<a name="9.1.4"></a>
[@angular](https://github.com/angular)/core module (#36783) (d3a77ea)<a name="9.1.3"></a>
@NgModule classes (#36369) (0bd50e2), closes #35700<a name="9.1.2"></a>
node_modules/ (#36559) (8c559ef), closes #36526paths mapping does not exist (#36525) (33eee43), closes #36518<a name="9.1.1"></a>
APP_INITIALIZERs before accessing LOCALE_ID token in Ivy TestBed (#36237) (5c28af0), closes #36230HtmlAst to get the span of HTML tag (#36371) (ffa4e11)main property for ESM5 format (#36396) (93cbef2), closes #35788browser property in entry-points (#36396) (b0d680d), closes #36062xhr2 dependency (#36366) (14ae3c0), closes #36358<a name="9.1.0"></a>
Blog post "Version 9.1 of Angular Now Available — TypeScript 3.8, faster builds, and more".
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the v9.1 release announcement.
EntryPointManifest in DirectoryWalkerEntryPointFinder (#35931) (ec9f4d5)margin and padding styles correctly (#35701) (35c9f0d), closes #35463KeyValuePipe accept type unions with null (#36093) (407fa42), closes #35743<ng-template>s (#35984) (79659ee), closes #35752<ng-template> tags (#35681) (40da51f)style="{{exp}}" based interpolation (#34202) (2562a3b), closes #33575debugger statement (#35763) (8f38eb7), closes #35470debugger statement when assert is thrown (#35763) (4003538), closes #35470noSideEffects() to make*Decorator() functions (#35769) (dc6a791)noSideEffects() to ɵɵdefineComponent() (#35769) (ba36127)class when shadowed (#35350) (8c75f21), closes #35335<ng-template> with local refs in i18n blocks (#35758) (ef75875)ɵɵNgOnChangesFeature() (#35769) (9cf85d2)ɵɵgetInheritedFactory() (#35769) (c195d22)Map/Set in [class]/[style] bindings (#35392) (2ca7984)[class] and [className] as unrelated bindings (#35668) (a153b61), closes #35577undefined (#36140) (e066bdd)SimpleChange#firstChange for pre-existing inputs (#36140) (447a600), closes #36130LFrame needs to release memory on leaveView() (#35156) (b9b512f), closes #35148NgIf context variables in template type checker (#35125) (40039d8), closes #34572} (#36123) (0767d37), closes #31586<file> elements (#35936) (fc4c3c3), closes #35839$localize calls (#35562) (df75451), closes #35376angular2-highcharts (#35527) (3cc8127), closes #35399[@angular](https://github.com/angular)/animations (#35949) (64d6f13), closes #35888<a name="9.0.7"></a>
<ng-template>s (#35984) (a6bf31b), closes #35752<a name="9.0.6"></a>
imports first and declarations second while calculating scopes (#35850) (6f2fd6e), closes #35502noSideEffects() to make*Decorator() functions (#35769) (#35846) (4fe3f37)noSideEffects() to ɵɵdefineComponent() (#35769) (#35846) (68ca32f)ɵɵgetInheritedFactory() (#35769) (#35846) (000c834)ɵɵNgOnChangesFeature() (#35769) (#35846) (d24ce21)<file> elements (#35936) (83d7819), closes #35839[@angular](https://github.com/angular)/animations (#35949) (db9704a), closes #35888<a name="9.0.5"></a>
margin and padding styles correctly (#35701) (2e251b7), closes #35463<ng-template> tags (#35681) (d1966fc)<ng-template> with local refs in i18n blocks (#35758) (5a14a15)debugger statement (#35763) (e201a84), closes #35470debugger statement when assert is thrown (#35763) (d3ee052), closes #35470[class] and [className] as unrelated bindings (#35668) (48025eb), closes #35577NgIf context variables in template type checker (#35125) (fcad075), closes #34572<a name="9.0.4"></a>
<a name="9.0.3"></a>
style="{{exp}}" based interpolation (#34202) (d63ba9c), closes #33575$localize calls (#35562) (bc7a8a8), closes #35376angular2-highcharts (#35527) (aebd662), closes #35399<a name="9.0.2"></a>
class when shadowed (#35350) (8220363), closes #35335Map/Set in [class]/[style] bindings (#35392) (1797390)LFrame needs to release memory on leaveView() (#35156) (4b1dcaf), closes #35148<a name="9.0.1"></a>
<a name="9.0.0"></a>
Blog post "Version 9 of Angular Now Available — Project Ivy has arrived!".
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the v9 release announcement.
@angular/core now requires:
@angular/compiler-cli now requires:
sass as a valid css preprocessor extension (#35052) (7f96fbb)DebugNode/DebugElement are tree-shakeable in Ivy (#35003) (23c0147), closes #30130package.json deterministically (#34870) (a10d2a8), closes #34635LOCALE_ID is set after app initializers (#34830) (7643913), closes #34701EsmDependencyHost (#34512) (7c3172a), closes /github.com/angular/angular/blob/18d89c9c8/packages/compiler-cli/ngcc/src/utils.ts#L10 /github.com/angular/angular/blob/18d89c9c8/packages/compiler-cli/ngcc/src/dependencies/esm_dependency_host.ts#L10 /github.com/angular/angular/blob/18d89c9c8/packages/compiler-cli/ngcc/src/dependencies/dependency_host.ts#L9require() calls in UMD (#34512) (79be354), closes /github.com/angular/angular/pull/34254/files#r359515373advance instructions before i18nExp (#34436) (ba4c31c)translate function when clearing translations (#34346) (1489e5e), closes #32781rootDir is the package path (#34212) (69dd516)exportAs is present (#34014) (24d1f9e)ngI18nClosureMode is guarded in generated code (#34211) (4d02556)ngI18nClosureMode is guarded (#34211) (2546261)ngProjectAs on templates (#34200) (41ea3c2)directiveInject instruction (#33948) (90a9043)viewRef that is already present (#34052) (978b500), closes #33924analyze and resolve processing (#33964) (ca5d772), closes /github.com/angular/angular/issues/33685#issuecomment-557091719versionedFiles option in config (#33903) (250e6fd)directiveInject function to support IcuContainers (#33832) (8452458)DebugElement.properties (#33781) (5be23a3), closes #33695ModuleWithProviders references (#33875) (f3d8f6a), closes #33701ngInjectableDef on types with inherited ɵprov (#33732) (4ec079f)document is available (#33712) (8362696), closes #33651ng2-dragula (#33797) (ecf38d4), closes #33718__decorator calls even when part of the IIFE return statement (#33777) (e1df98b)viaModule to namespace imports (#33495) (1d141a8), closes #32166__spreadArrays tslib helper (#33617) (d749dd3), closes #33614getInternalNameOfClass() and getAdjacentNameOfClass() for ES5 (#33533) (93a23b9)alt-trans tags in XLIFF 1.2 (#33450) (936700a), closes #33161localize-translate to accept target-locales (#33381) (41979d6)undefined for directive inputs (#33066) (50bf17a), closes #32690ivy-ngcc to ngcc (#33140) (1a34fbc)ng with Closure Compiler enhanced optimizations (#33010) (bad3434)DebugElement (#32842) (c32b2ae)ngProjectAs into attributes array (#32784) (966c2a3)ModuleWithProviders (#32902) (002a97d)ctorParameters and __decorate (#32901) (747f0cf)window.ng.getDebugNode returns debug info for component elements (#32780) (5651fa3)window.ng utilities are published when NgModules are used (#32725) (a0d04c6)PH (#32493) (f1b1de9)MessageIds (#32594) (b741a1c)MessageId for matching translations (#32594) (357aa4a).d.ts files for UMD/CommonJS bundles (#32619) (3c7da76), closes #31791$localize" error message (#32491) (a9ff48e)$localize (#32473) (a731119)prepublishOnly script and not the overwritten one (#32427) (38359b1)NO_CHANGE value is encountered (#32143) (7cc4225)refreshView call (#32201) (6b245a3)[@microsoft](https://github.com/microsoft)/api-extractor (#32187) (5da5ca5)readConfiguration (#32234) (424ab48)ExpressionChangedAfterChecked error message for attributes (#34505) (d63572e)@Injectable() (#33362) (31b9492)$localize if requested (#32937) (bcbf3e4)--create-ivy-entry-points option on ivy-ngcc (#33049) (b2b917d), closes /github.com/angular/angular/pull/32999#issuecomment-539937368versionedFiles option (#32862) (5d5c94d)window.ng.getDebugNode helper (#32727) (4726ac2)$localize metadata block (#32594) (c7abb7d)EXISTING_CLIENTS_ONLY mode when there is a valid update (#31865) (094538c), closes #31109[@microsoft](https://github.com/microsoft)/api-extractor (#32185) (350ea47)providedIn: 'platform'|'any' (#32154) (77c382c)$localize() global function (#31609) (b21397b)DomElementSchemaRegistry (#34332) (ce94192)viewRef to the same position (#34052) (d228801)PlatformLocation tree-shakable (#32154) (1537791)fr locales changed from \xa0 to \u202f (c1bd3bc)tslib. Instead it is now listed a peerDependency.Users not using the CLI will need to manually install tslib via;
yarn add tslib
or
npm install tslib --save
<ngForm></ngForm> can no longer be used as a selector. Use <ng-form></ng-form> instead.NgFormSelectorWarning directive has been removed.FormsModule.withConfig has been removed. Use the FormsModule directly.Renderer has been removed. Use Renderer2 instead.RenderComponentType has been removed. Use RendererType2 instead.RootRenderer has been removed. Use RendererFactory2 instead.versionedFiles from service worker asset group configuration in ngsw-config.jsonBefore
"assetGroups": [
{
"name": "test",
"resources": {
"versionedFiles": [
"/**/*.txt"
]
}
}
]
After
"assetGroups": [
{
"name": "test",
"resources": {
"files": [
"/**/*.txt"
]
}
}
]
loadTranslations() function) must now use
MessageId for the translation key rather than the previous SourceMessage
string.$localize function to the global scope import from
@angular/localize/init. Previously it was @angular/localize. To access the loadTranslations() and clearTranslations() functions,
import from @angular/localize. Previously it was @angular/localize/run_time.This should impact very few users and the user's that are impacted have a very easy upgrade path to switch to fetching the protractor_web_test_suite rule via the @bazel/protractor npm package.
hasBeenProcessed().This was exported to be available to the CLI integration but was never used. The change to the function signature is a breaking change in itself so we remove the function altogether to simplify and lower the public API surface going forward.
any through the
deprecated implementation.If you aren't familiar with Ivy, read our blog post about the Ivy preview and see the list of changes here.
HammerModulein their root module. (#32203) (de8ebbd)<a name="8.2.14"></a>
<a name="8.2.13"></a>
<a name="8.2.12"></a>
<a name="8.2.11"></a>
<a name="8.2.10"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="8.2.9"></a>
<a name="8.2.8"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="8.2.7"></a>
<a name="8.2.6"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="8.2.5"></a>
This release contains various API docs improvements.
<a name="8.2.4"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="8.2.3"></a>
<a name="8.2.2"></a>
<a name="8.2.1"></a>
<a name="8.2.0"></a>
freshness strategy (#30977) (d7be38f), closes #30968<a name="8.1.3"></a>
<a name="8.1.2"></a>
<a name="8.1.1"></a>
<a name="8.1.0"></a>
undefined meta in injectArgs (#31333) (80ccd6c), closes CLI #14888freshness strategy (#30977) (b0c3453), closes #30968<a name="8.1.0-rc.0"></a>
Object.create(null) tokens (#16848) (5e53956)<a name="8.0.3"></a>
<a name="8.1.0-next.3"></a>
<a name="8.0.2"></a>
<a name="8.1.0-next.2"></a>
HttpUploadProgressEvent interface as public API (#30852) (5c18f23), closes #30814<a name="8.0.1"></a>
HttpUploadProgressEvent interface as public API (#30852) (4e8614b), closes #30814<a name="8.1.0-next.1"></a>
<a name="8.1.0-beta.0"></a>
TestBed.deprecatedOverrideProvider API (#30576) (a96976e)history.state is set in eager update mode (#30154) (b40f6f3)rbe_autoconfig() and new container. (#29336) (9abf114)onUrlChange hook (#30466) (1aff524)SlicePipe (#30156) (95830ee)definitionAndBoundSpan (#30125) (f491673)<a name="8.0.0"></a>
Blog post "Version 8 of Angular — Smaller bundles, CLI APIs, and alignment with the ecosystem".
To learn about the release highlights and our CLI-powered automated update workflow for your projects please check out the v8 release announcement.
SlicePipe (#30156) (722b2fa)rbe_autoconfig() and new container (#29336) (e562acc)$location-related APIs (#30055) (152d99e)Location service (#30055) (b44b143)MockPlatformLocation to enable more robust testing of Location services (#30055) (d0672c2)UrlCodec type for use with upgrade applications (#30055) (ec455e1)DOCUMENT token from platform-browser (#28117) (3a9d247)SwRegistrationOptions token to allow runtime config (#21842) (39c0152)DOCUMENT import (#29950) (645e305)AbstractType<T> interface (#29295) (afd4a4e), closes #26491BEFORE_APP_SERIALIZED promises (#29120) (7102ea8)onUrlChange hook (#30466) (8022d36)markAllAsTouched() to AbstractControl (#26812) (45bf911), closes #19400ts_library interop with list-typed inputs (#30600) (bf38df4)TestBed.deprecatedOverrideProvider API (#30576) (5a46f94)TextBed.get overload (#30514) (561e01d), closes #29290 #29905history.state is set in eager update mode (#30154) (9720227)ng_package rule for @angular/common (#30117) (6de4cbd), closes #30055 #30116MockPlatformLocation to set state to new object (#30055) (825efa8)onMicrotaskEmpty emits while a $digest is in progress (#29794) (0ddf2e7), closes #24680 /github.com/angular/angular/blob/78146c189/packages/core/src/util/ng_dev_mode.ts#L12 #24680ng build --prod (#30005) (96a8289)HttpParams mutations (#29045) (8e8e89a), closes #20430EventListener in typings (#29809) (4bde40f), closes #29806ng add when invoked independently (#29852) (bd2ce9c)ts.parseJsonConfigFileContent (#29872) (86a3f90)configuration_env_vars = ["compile"] to generated @npm//@angular/bazel/bin:ngc-wrapped nodejs_binary (#29694) (2e66ddf)ts_web_test_suite (#29695) (2bd9214)@Injectable() to common pipes (#29834) (387fbb8)LogicalProjectPaths always start with a slash (#29627) (e02684e)ngOnDestroy for tree-shakeable providers (#28943) (30b0442), closes #28927TestBed.get(...):any (#29290) (609024f), closes #13785 #26491APP_ID in styles, contentAttr and hostAttr (#17745) (712d60e)//:tsconfig.json as the default for ng_module (#29670) (b14537a)ng_module users to set createExternalSymbolFactoryReexports (#29459) (21be0fb)ngDoCheck and ngOnChanges (#29492) (09fab58)NgFactory promise in loadChildren typings (#29392) (26a8c59)packages/bazel/src/schematics/ng-add/index.ts (#29282) (9a7f560)<tr> and <col> elements into a required parent (#29219) (f2dc32e)position and display styles are handled outside of keyframes/web-animations (#28911) (a6ae759), closes #24923 #25635sourceMappingURL comments that have trailing lines (#28055) (0d6fdec)skipLocationChange with named outlets (#28300) (50df897), closes #27680 #28200DomElementSchemaRegistry instance (#28150) (#28151) (ce3a746)Before:
TestBed.configureTestingModule({
providers: [{provide: "stringToken", useValue: new Service()}],
});
let service = TestBed.get("stringToken"); // type any
After:
const SERVICE_TOKEN = new InjectionToken<Service>("SERVICE_TOKEN");
TestBed.configureTestingModule({
providers: [{provide: SERVICE_TOKEN, useValue: new Service()}],
});
let service = TestBed.get(SERVICE_TOKEN); // type Service
bazel: @bazel/typescript is now a peerDependency of @angular/bazel so users of @angular/bazel must add @bazel/typescript to their package.json
bazel: ng_module now depends on a minimum of build_bazel_rules_nodejs 0.27.12
core: In Angular version 8, it's required that all @ViewChild and @ContentChild
queries have a 'static' flag specifying whether the query is 'static' or
'dynamic'. The compiler previously sorted queries automatically, but in
8.0 developers are required to explicitly specify which behavior is wanted.
This is a temporary requirement as part of a migration; see
static query migration guide for more details.
@ViewChildren and @ContentChildren queries are always dynamic, and so are
unaffected.
TestBed.get() has two signatures, one which is typed and another which accepts and returns any. The signature for any is deprecated; all usage of TestBed.get() should go through the typed API. This mainly affects string tokens
(which aren't supported) and abstract class tokens.
Before:
TestBed.configureTestingModule({
providers: [{provide: "stringToken", useValue: new Service()}],
});
let service = TestBed.get("stringToken"); // type any
After:
const SERVICE_TOKEN = new InjectionToken<Service>("SERVICE_TOKEN");
TestBed.configureTestingModule({
providers: [{provide: SERVICE_TOKEN, useValue: new Service()}],
});
let service = TestBed.get(SERVICE_TOKEN); // type Service
core: Certain elements (like <tr> or <col>) require parent elements to be of a certain type by the HTML specification
(ex. <tr> can only be inside <tbody> / <thead>). Before this change Angular template parser was auto-correcting
"invalid" HTML using the following rules:
<tr> would be wrapped in <tbody> if not inside <tbody>, <tfoot> or <thead>;<col> would be wrapped in <colgroup> if not inside <colgroup>.This mechanism of automatic wrapping / auto-correcting was problematic for several reasons:
<tr> / <col> are at the root of a component's content, ex.:<projecting-tr-inside-tbody>
<tr>...</tr>
</projecting-tr-inside-tbody>
In the above example the <projecting-tr-inside-tbody> component could be "surprised" to see additional
<tbody> elements inserted by Angular HTML parser.
http: The deprecated @angular/http package has been removed, the @angular/common/http package should be used instead. For details on how to migrate, please refer to the deprecations guide.
TypeScript 3.1 and 3.2 are no longer supported.
Please update your TypeScript version to 3.4, as version 3.3 is also not supported.
<a name="7.2.15"></a>
onMicrotaskEmpty emits while a $digest is in progress (#29794) (#30107) (1084c19), closes #24680 /github.com/angular/angular/blob/78146c189/packages/core/src/util/ng_dev_mode.ts#L12 #24680<a name="7.2.13"></a>
<a name="7.2.12"></a>
<a name="7.2.11"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="7.2.10"></a>
<a name="7.2.9"></a>
This release contains various API docs improvements.
<!-- CHANGELOG SPLIT MARKER --><a name="7.2.8"></a>
position and display styles are handled outside of keyframes/web-animations (#28911) (86981b3), closes #24923 #25635<a name="7.2.7"></a>
<a name="7.2.6"></a>
<a name="7.2.5"></a>
(2019-02-15)
<a name="7.2.4"></a>
<a name="7.2.3"></a>
<a name="7.2.2"></a>
skipLocationChange with named outlets (#28301) (32737a6), closes #27680 #28200<a name="8.0.0-beta.0"></a>
<a name="7.2.1"></a>
<a name="7.2.0"></a>
7.2.0 release also contains all the fixes released in 7.1.4.
state to routerLink directives (#27198) (73f6ed9), closes #24617NavigationExtras (#27198) (67f4a5d)schematics/bazel-workspace files (#27600) (3290fc3)InjectableDecorator (#27360) (4b9948c), closes #26942downgradeModule() (#27217) (326b464), closes #22581 #22869 #27083<a name="7.1.4"></a>
<a name="7.1.3"></a>
<a name="7.1.2"></a>
<a name="7.1.1"></a>
<a name="7.1.0"></a>
<a name="7.1.0-rc.0"></a>
relativeLinkResolution to recognize operator (#26990) (a752971), closes #26983<a name="7.0.4"></a>
relativeLinkResolution to recognize operator (#26990) (d304427), closes #26983<a name="7.1.0-beta.2"></a>
ɵdefineNgModule is available in flat-file formats (#26403) (a64859b)<a name="7.0.3"></a>
<a name="7.1.0-beta.1"></a>
<a name="7.0.2"></a>
<a name="7.1.0-beta.0"></a>
<a name="7.0.1"></a>
<a name="7.0.0"></a>
Blog post "Version 7 of Angular — CLI Prompts, Virtual Scroll, Drag and Drop and more".
To learn about the release highlights and our new CLI-powered update workflow for your projects please check out the v7 release announcement.
angularCompilerOptions (#22717) (d7e5bbf), closes #22684ts_api_guardian_test def (#25694) (2a21ca0)peerDependency to @angular/compiler (#26033) (549de1e), closes /github.com/angular/angular/commit/919f42fea1df4b9e38b7d688aef5f2de668e9d3e#diff-58563046c4439699f2e6a89187099a54setUpLocationSync() (#20244) (ba1e25f), closes #20061$destroy event on upgraded component element (#25357) (2a672a9), closes #25334<a name="6.1.10"></a>
HammerInstance.off() is run (#22156) (3b4d9dc)<a name="6.1.9"></a>
<a name="6.1.7"></a>
$destroy event on upgraded component element (#25357) (82e0676), closes #25334<a name="6.1.6"></a>
Note: the 6.1.5 release on npm accidentally glitched-out midway, so we cut 6.1.6 instead. sorry! :-)
<!-- CHANGELOG SPLIT MARKER --><a name="6.1.4"></a>
<a name="6.1.3"></a>
Cache-Control: no-cache on assets breaks service worker (#25408) (1319ff4), closes #25442<a name="6.1.2"></a>
setUpLocationSync() (#20244) (ae9b4e6), closes #20061<a name="6.1.1"></a>
<a name="6.1.0"></a>
Blog post "Angular v6.1 Now Available — TypeScript 2.9, Scroll Positioning, and more".
. in import statements. (#20634) (d8f7b29), closes #20363Reflect (#24299) (6881404), closes #21420SwPush.unsubscribe() (#24162) (3ed2d75), closes #24095clientId (#23625) (e0ed59e), closes #23526versionedFiles in asset-group resources (#23584) (1d378e2)// ... and // TODO in mock compiler expectations (#23441) (c6b206e)tsickle to 0.29.x (#24233) (f69ac67)? in SW config globbing (#24105) (250527c)For example:
local_repository(
name = "angular",
path = "node_modules/@angular/bazel",
)
load("@angular//:index.bzl", "ng_setup_workspace")
ng_setup_workspace()
<a name="6.0.9"></a>
<a name="6.0.8"></a>
Reflect (#24299) (de1c44f), closes #21420<a name="6.0.7"></a>
<a name="6.0.6"></a>
. in import statements. (#20634) (e543c73), closes #20363<a name="6.0.5"></a>
SwPush.unsubscribe() (#24162) (ea2987c), closes #24095<a name="6.0.4"></a>
<a name="6.0.3"></a>
<a name="6.0.2"></a>
versionedFiles in asset-group resources (#23584) (c6b618d)<a name="6.0.1"></a>
clientId (#23625) (2254ac2), closes #23526<a name="6.0.0"></a>
Blog post "Version 6 of Angular Now Available".
Angular v6 is the first release of Angular that unifies the Framework, Material and CLI.
To learn about the release highlights and our new CLI-powered update workflow for your projects please check out the v6 release announcement.
element and params within transition matchers (#22693) (58b94e6)preserveWhitespaces to false by default (#22046) (f1a0632), closes #22027CurrencyPipe (#21783) (44154e7), closes #10189/*# sourceURL ... */ (#16088) (5f681f9).ngsummary.json files idempotent (#21448) (e64b1e9)* match 0 characters in globs (#23339) (6c2c958)only-if-cached requests (#22883) (d9dc46e), closes #22362OnPush components (#22209) (ad9ce5c), closes #14286= bindings in @angular/upgrade (#22167) (f089bf5)animations: When animation is triggered within a disabled zone, the associated event (which an instance of AnimationEvent) will no longer report the totalTime as 0 (it will emit the actual time of the animation).
To detect if an animation event is reporting a disabled animation then the event.disabled property can be used instead.
compiler: The <template> tag was deprecated in Angular v4 to avoid collisions (i.e. when using Web Components).
This change removes support for <template>. <ng-template> should be used instead.
BEFORE:
<!-- html template -->
<template>some template content</template>
# tsconfig.json
{
# ...
"angularCompilerOptions": {
# ...
# This option is no more supported and will have no effect
"enableLegacyTemplate": [true|false]
}
}
AFTER:
<!-- html template -->
<ng-template>some template content</ng-template>
core: it is no longer possible to import animation-related functions from @angular/core. All animation symbols must now be imported from @angular/animations.
forms: - AbstractControl#statusChanges now emits an event of 'PENDING' when you call AbstractControl#markAsPending
markAsPendingstatusChanges that you account for the new event when calling markAsPendingforms: ngModelChange is now emitted after the value/validity is updated on its control.
Previously, ngModelChange was emitted before its underlying control was updated. This was fine if you passed through the value directly through the $event keyword, e.g.
<input [(ngModel)]="name" (ngModelChange)="onChange($event)">
onChange(value) {
console.log(value); // would log updated value
}
However, if you had a handler for the ngModelChange event that checked the value through the control, you would get the old value rather than the updated value. e.g:
<input #modelDir="ngModel" [(ngModel)]="name" (ngModelChange)="onChange(modelDir)">
onChange(ngModel: NgModel) {
console.log(ngModel.value); // would log old value, not updated value
}
Now the value and validity will be updated before the ngModelChange event is emitted, so the same setup will log the updated value.
onChange(ngModel: NgModel) {
console.log(ngModel.value); // will log updated value
}
We think this order will be less confusing when the control is checked directly. You will only need to update your app if it has relied on this bug to keep track of the old control value. If that is the case, you should be able to track the old value directly by saving it on your component.
<a name="5.2.10"></a>
only-if-cached requests (#22883) (0d4fe38), closes #22362OnPush components (#22209) (f43fba6), closes #14286<a name="4.4.7"></a>
<a name="5.2.9"></a>
<a name="5.2.8"></a>
<a name="5.2.7"></a>
= bindings in @angular/upgrade (#22167) (6638390)<a name="5.2.6"></a>
<a name="5.2.5"></a>
<a name="5.2.4"></a>
<a name="5.2.3"></a>
<a name="5.2.2"></a>
/*# sourceURL ... */ (#16088) (de6c644)<a name="5.2.1"></a>
.ngsummary.json files idempotent (#21448) (a931a41)<a name="5.2.0"></a>
Blog post "Angular 5.2 Now Available".
getCurrencySymbol (#20983) (fecf768)Note: Due to an animation fix back in 5.1.1 (c2b3792) which allows for nested :leave queries to work within animation sequences, all elements that are dynamically inserted (*ngIf, *ngFor, etc…) now contain the special CSS class: “ng-star-inserted”. This may cause failures within unit tests if there are any assertions that match against element.className directly. (An easy fix for this is to match using a regular expression instead of asserting the className string directly.)
<!-- CHANGELOG SPLIT MARKER --><a name="5.2.0-rc.0"></a>
<a name="5.1.3"></a>
<a name="5.2.0-beta.1"></a>
<a name="5.1.2"></a>
<a name="5.2.0-beta.0"></a>
StaticInjectorError message (#20817) (b7738e1), closes #19302<a name="5.1.1"></a>
<a name="5.1.0"></a>
Blog post "Angular 5.1 & More Now Available".
<a name="5.1.0-rc.1"></a>
<a name="5.0.5"></a>
<a name="5.1.0-rc.0"></a>
registerLocaleData (#20623) (24bf3e2)<a name="5.0.4"></a>
<a name="5.1.0-beta.2"></a>
fullTemplateTypeCheck (#20490) (4ed0439)<a name="5.0.3"></a>
fullTemplateTypeCheck (#20490) (b53ead4)<a name="5.1.0-beta.1"></a>
<!-- CHANGELOG SPLIT MARKER -->Note, if you do
Injector.get(Token)whereTokenhas static members, you'll run into https://github.com/Microsoft/TypeScript/issues/20102 where the returned type is{}rather thanToken. UseInjector.get<Token>(Token)to work around.
<a name="5.0.2"></a>
<a name="5.1.0-beta.0"></a>
<a name="5.0.1"></a>
--noEmitOnError is off (#20063) (8639995)__symbol__ should return __zone_symbol__ without zone.js loaded (#19541) (678d1cf)jasmineToString() method (#19794) (5a6efa7)<a name="5.0.0"></a>
Blog post "Version 5.0.0 of Angular Now Available".
closure-locale.ts to tree shake locale data (#18907) (4878936)ngc (#18818) (06d01b2)useValue and data literal fields (#18905) (0e64261)@Injectable (#19412) (dfb8d21).ngsummary.json files portable (2572bf5)enableLegacyTemplate to false by default (#18756) (56238fe)AbstractControlDirective (233ef93)ts.Program faster. (#19275) (edd5f5a)@angular/platform-server now additionally depends on @angular/platform-browser-dynamic as a peer dependency. (#18683) (0cc77b4)platformXXXX() no longer accepts providers which depend on reflection. Specifically the method signature went from Provider[] to StaticProvider[].Example: Before:
[
MyClass,
{provide: ClassA, useClass: SubClassA}
]
After:
[
{provide: MyClass, deps: [Dep1,...]},
{provide: ClassA, useClass: SubClassA, deps: [Dep1,...]}
]
NOTE: This only applies to platform creation and providers for the JIT
compiler. It does not apply to @Component or @NgModule provides
declarations.
Benchpress note: Previously Benchpress also supported reflective provides, which now require static providers.
Because of multiple bugs and browser inconsistencies, we have dropped the intl api in favor of data exported from the Unicode Common Locale Data Repository (CLDR). Unfortunately we had to change the i18n pipes (date, number, currency, percent) and there are some breaking changes.
Breaking change:
en-US, if you set the value of LOCALE_ID to another locale, you will have to import new locale data for this language because we don't use the intl API anymore.Features:
locale which allows you to use a specific locale instead of the one defined in the token LOCALE_ID (whose default value is en-US).CommonModule. To use them, you will have to import the DeprecatedI18NPipesModule after the CommonModule (the order is important):import { NgModule } from '@angular/core';
import { CommonModule, DeprecatedI18NPipesModule } from '@angular/common';
@NgModule({
imports: [
CommonModule,
// import deprecated module after
DeprecatedI18NPipesModule
]
})
export class AppModule { }
Don't forget that you will still need to import the intl API polyfill if you want to use those deprecated pipes.
Breaking changes:
short, shortTime, shortDate, medium, ...) now use the patterns given by CLDR (like it was in AngularJS) instead of the ones from the intl API. You might notice some changes, e.g. shortDate will be 8/15/17 instead of 8/15/2017 for en-US.GGGGG instead of G, the format G is now similar to GG and GGG.MMMMM instead of L, the format L is now the short standalone version of months.EEEEE instead of E, the format E is now similar to EE and EEE.z will now fallback to O and output GMT+1 instead of the complete zone name (e.g. Pacific Standard Time), this is because the quantity of data required to have all the zone names in all of the existing locales is too big.Z will now output the ISO8601 basic format, e.g. +0100, you should now use ZZZZ to get GMT+01:00.| Field type | Format | Example value | v4 | v5 |
|---|---|---|---|---|
| Eras | Narrow | A for AD | G | GGGGG |
| Months | Narrow | S for September | L | MMMMM |
| Week day | Narrow | M for Monday | E | EEEEE |
| Timezone | Long location | Pacific Standard Time | z | Not available |
| Timezone | Long GMT | GMT+01:00 | Z | ZZZZ |
Features
long, full, longTime, fullTime.yyy is now supported, e.g. the year 52 will be 052 and the year 2017 will be 2017.L to LLLLL.w and ww, e.g. weeks 5 and 05.W, e.g. week 3.S to SSS.aa, aaa, aaaa and aaaaa. The formats a to aaa are similar, while aaaa is the wide version if available (e.g. ante meridiem for am), or equivalent to a otherwise, and aaaaa is the narrow version (e.g. a for am).b to bbbbb (and B to BBBBB for the standalone equivalents), e.g. morning, noon, afternoon, ....O to OOOO. The formats O to OOO will output GMT+1 while the format OOOO will be GMT+01:00.Z to ZZZZZ. The formats Z to ZZZ will output +0100, while the format ZZZZ will be GMT+01:00 and ZZZZZ will be +01:00.Bug fixes
GG will be AD instead of 8 15, 2017 AD.symbolDisplay is now symbol instead of code. This means that by default you will see $4.99 for en-US instead of USD4.99 previously.symbolDisplay) is no longer a boolean, it now takes the values code, symbol or symbol-narrow. A boolean value is still valid for now, but it is deprecated and it will print a warning message in the console.code, symbol or symbol-narrow which gives you access to more options for some currencies (e.g. the canadian dollar with the code CAD has the symbol CA$ and the symbol-narrow $).{{ 3.141592 | percent }} will output 314% for the locale en-US instead of 314.1592% previously.ngGetContentSelectors() has been removed as it was deprecated since v4. Use ComponentFactory.ngContentSelectors instead.enableLegacyTemplate is now disabled by default as the <template> element was deprecated since v4. Use <ng-template> instead. The option enableLegacyTemplate and the <template> element will both be removed in Angular v6.useDebug for the compiler has been removed as it had no effect and was deprecated since v4. (#18778) (499d05d)ng-container (#18998) (66a5dab)NgFor has been removed as it was deprecated since v4. Use NgForOf instead. This does not impact the use of *ngFor in your templates. (#18758) (ec56760)NgTemplateOutlet#ngOutletContext has been removed as it was deprecated since v4. Use NgTemplateOutlet#ngTemplateOutletContext instead. (#18780) (7522987)ErrorHandler no longer takes a parameter as it was not used and deprecated since v4. (#18759) (8f41326)ReflectiveInjector is now deprecated. Use Injector.create as a replacement.Testability#findBindings has been removed as it was deprecated since v4. Use Testability#findProviders instead. (#18782) (f2a2a6b)DebugNode#source has been removed as it was deprecated since v4. (#18779) (d61b902)OpaqueToken has been removed as it was deprecated since v4. Use InjectionToken instead. (#18971) (3c4eef8)DifferFactory.create no longer takes ChangeDetectionRef as a first argument as it was not used and deprecated since v4. (#18757) (be9713c)TrackByFn has been removed because it was deprecated since v4. Use TrackByFunction instead. (#18757) (596e9f4)RouterOutlet properties locationInjector and locationFactoryResolver have been removed as they were deprecated since v4. (#18781) (d1c4a94, a9ef858)true, false, legacy_enabled and legacy_disabled for the router parameter initialNavigation have been removed as they were deprecated. Use enabled or disabled instead. (#18781) (d76761b)NgProbeToken has been removed from @angular/platform-browser as it was deprecated since v4. Import it from @angular/core instead. (#18760) (d7f42bf)PRIMITIVE has been removed as it was deprecated since v4. Use SerializerTypes.PRIMITIVE instead. (#18761) (a56468c)<a name="4.4.6"></a>
<a name="4.4.5"></a>
TestBed.overrideProvider should keep imported NgModules eager (#19624) (734378c)Injector.get (#19558) (e292548), closes #15501<a name="4.4.4"></a>
type declarations (#19040) (ae52851)<a name="4.4.3"></a>
<a name="4.4.2"></a>
<a name="4.4.1"></a>
Note: the 4.4.0 release on npm accidentally glitched-out midway, so we cut 4.4.1 instead. oops :-)
<!-- CHANGELOG SPLIT MARKER --><a name="4.3.6"></a>
<a name="4.3.5"></a>
<a name="4.3.4"></a>
<a name="4.3.3"></a>
<a name="4.3.2"></a>
<a name="4.3.1"></a>
<target/> when extracting xliff (f0476fc), closes #15754<a name="4.3.0"></a>
Blog post "Angular 4.3 Now Available".
0 animation state as void (451257a)any ngForOf of type any (f194f18)tslib into the language service package (4e6be15)::ng-deep (b754e60)directive.link in upgraded components (0193be7)<a name="4.2.6"></a>
:animating queries collect previous animation elements properly (d48b7d3)<a name="4.2.5"></a>
<a name="4.2.4"></a>
any ngForOf of type any (63a5f33)tslib into the language service package (20eb5cf)<a name="4.2.3"></a>
0 animation state as void (451257a)<a name="4.2.2"></a>
0 animation state as void (451257a).ngfactory.ts files by default (ed73d4f)<a name="4.2.1"></a>
<a name="4.2.0"></a>
:leave flags if animations are set to run (b55adee)<a name="4.2.0-rc.2"></a>
<a name="4.2.0-rc.1"></a>
.ngfactory.ts files even if nobody references them. (#16899) (573b861), closes #16741@Inject (#16222) (27761b4), closes #15424|null and |undefined when collecting types (#16222) (1651a8f)<a name="4.2.0-rc.0"></a>
...null spread in extraction (#16547) (e0a8376)TestBed.overrideProvider (#16725) (39b92f7)<a name="4.1.3"></a>
<a name="4.2.0-beta.1"></a>
<a name="4.1.2"></a>
...null spread in extraction (#16547) (d0e1688)<a name="4.2.0-beta.0"></a>
ChangeDetectorRef. (#16394) (392d584), closes #12816OnPush components (#16394) (aa8bba4), closes #9720ng-version for dynamically created components (#16394) (a4de214), closes #15880ngOnChanges() (b3e63c0), closes #16212begin and end renderer methods to track change detection (7f9c589)<a name="4.1.1"></a>
ChangeDetectorRef. (#16394) (f66e59e), closes #12816OnPush components (#16394) (acf83b9), closes #9720ng-version for dynamically created components (#16394) (85a1b54), closes #15880ngOnChanges() (dd4e501), closes #16212<a name="4.1.0"></a>
<a name="4.1.0-rc.0"></a>
<ng-container> whatever the namespace (5b141fb), closes #14257?. expressions (0a3a9af), closes #15885RouterLinkActive from causing an infinite CD loop (82417b3), closes #15825<a name="4.0.3"></a>
RouterLinkActive from causing an infinite CD loop (4479c42), closes #15825<a name="4.1.0-beta.1"></a>
<a name="4.0.2"></a>
<a name="4.1.0-beta.0"></a>
Note: 4.1.0-beta.0 release also contains all the changes present in the 4.0.1 release.
<!-- CHANGELOG SPLIT MARKER --><a name="4.0.1"></a>
reflect-metadata module to be provided (#15569) (bfa4f70), closes #15568Symbol.members (#15529) (bf25e94), closes #15528updateModuleAnalysis() (#15543) (5597fd3)<a name="4.0.0"></a>
toString is exported (#15430) (0dda01e), closes #15420From 4.0.0 @angular/core uses a WeakMap, a polyfill needs to be included for browsers that do not support it natively.
<a name="4.0.0-rc.6"></a>
void state transitions (#15245) (c66437f), closes #152231 and 0 (#15311) (94da801), closes #15247check if we don’t need to (#15322) (764e90f)WrappedValue to the binding of the pipe (#15257) (0c43535), closes #15116NgModuleRef in ViewContainerRef.createComponent. (#15350) (431eb30), closes #15241inputs, outputs and ngContentSelectors on ComponentFactory. (#15214) (791534f)ParamMap.keys to get a list of parameters (d3eda7a)ParamMap to access parameters (a755b71)ComponentFactory.inputs/outputs/ngContentSelectors (#15214) (9429032)<a name="4.0.0-rc.5"></a>
<a name="4.0.0-rc.4"></a>
ng:// prefix for sourcemap urls (#15218) (994089d)noUnusedLocals check (50ab06e), closes #14797[@Injectable](https://github.com/Injectable) classes with invalid args. (5c34066), closes #15003TemplateRef when used as a reference. (#15066) (df914ef), closes #14873as syntax in template/* bindings (#15025) (c10c060), closes #15020inputs, outputs and ngContentSelectors on ComponentFactory. (1171f91)ComponentFactory.inputs/outputs/ngContentSelectors (a3e32fb)Previously, any provider that had an ngOnDestroy lifecycle hook would be created eagerly.
Now, only classes that are annotated with @Component, @Directive, @Pipe, @NgModule are eager. Providers only become eager if they are either directly or transitively injected into one of the above.
This also makes all useValue providers eager, which
should have no observable impact other than code size.
EXPECTED IMPACT: Making providers eager was an incorrect behavior and never documented. Also, providers that are used by a directive / pipe / ngModule stay eager. So the impact should be rather small.
DebugNode.source no longer returns the source location of a node.
Closes 14013
core: (since v4 rc.1)
Renderer2.setStyle no longer takes booleans but rather a
bit mask of flags.<a name="2.4.10"></a>
<a name="4.0.0-rc.3"></a>
Renderer outside of views. (#14882) (ba4b6f5), closes #14872RendererV2 to Renderer2RendererTypeV2 to RendererType2RendererFactoryV2 to RendererFactory2<a name="2.4.9"></a>
<a name="4.0.0-rc.2"></a>
EMPTY_MAP / EMPTY_ARRAY (#14806) (5ba55b0)animation in RendererTypeV2 and skip if empty (#14773) (77682a3)isComponentView() and isEmbeddedView() tests (#14789) (5753de5), closes #14778<a name="4.0.0-rc.1"></a>
We are excited to share 4.0.0-RC.1 with the community. This is a feature-complete pre-release of 4.0.0. Upgrade to get to know the new features to be released in 4.0.0, and to help us validate the release.
It’s important to note that this release has been tested extensively. All Angular applications within Google use the master branch of Angular, so every commit is tested and validated at scale prior to any release.
Please give this RC a try and test it with your projects! We have spent a significant amount of time working to ensure that this release is backwards compatible and will work with your existing code, but you may have use cases we haven’t anticipated. If you are broken by this release, let us know so that we can look into it right away. We are also looking for feedback related to the ergonomics of any newly added APIs.
We’ve made changes under the hood to what AOT generated code looks like. These changes should reduce the size of the generated code for your components by more than half in some cases. Read the Design Doc for the View Engine updates.
*ngIf syntaxOur template binding syntax now supports a couple helpful changes. You can now use an if/else style syntax, and assign local variables such as when unrolling an observable.
<ng-template #loading>Loading...</ng-template>
<div *ngIf="userObservable | async; else loading; let user">
{{ user.name }}
</div>
We have pulled Animations into their own package. This means that if you don’t use Animations, this extra code will not end up in your production bundles. This also allows you to more easily find documentation and to take better advantage of autocompletion. If you do need animations, libraries like Material will automatically import the module (once you install it via NPM), or you can add it yourself to your main NgModule.
We’ve updated Angular to a more recent version of TypeScript. This will improve the speed of ngc and you will get better type checking throughout your application.
Angular is now compliant with TypeScript’s StrictNullChecks. This means that you can enable StrictNullChecks in your project, if desired.
Universal, the project that allows developers to run Angular on a server, is now up to date with Angular again, and has been adopted by the Angular team. This release now includes the results of the work from the Universal team over the last few months. The majority of the Universal code is now in platform-server. To learn more about this change, take a look the new renderModuleFactory method, or Rob Wormald’s Demo Repository. More documentation is forthcoming.
<a name="flat-es-modules-esm"></a><!-- legacy anchor link, keep it here -->
We now ship flattened versions of our modules ("rolled up" version of our code in the EcmaScript Module format, see example file). This format should help tree-shaking, help reduce the size of your generated bundles, and speed up build, transpilation, and loading in the browser in certain scenarios.
We now also ship our packages in the ES2015 Flat ESM format. This option is experimental and opt-in (configure your webpack to resolve "es2015" property in package.json over the regular "module" property).
The following is a list of known issues that will be fixed in the next rcs.
We have two main ways to update. If you have an existing project, you should be able to run:
On Linux/Mac: npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@next --save
On Windows: npm install @angular/common@next @angular/compiler@next @angular/compiler-cli@next @angular/core@next @angular/forms@next @angular/http@next @angular/platform-browser@next @angular/platform-browser-dynamic@next @angular/platform-server@next @angular/router@next @angular/animations@next --save
Then run whatever ng serve or npm start command you normally use, and everything should work.
Please ensure that you are using Typescript v2.1.6 or higher.
If you rely on Animations you’ll also need to install the animations package @angular/animations and import the new BrowserAnimationsModule from @angular/platform-browser/animations in your root NgModule. Without this, your code will compile and run, but animations won’t activate.
Imports from @angular/core were deprecated, use imports from the new package import { trigger, state, style, transition, animate } from '@angular/animations';.
We have three more release candidates scheduled before our planned GA the week of March 22. In the meantime we'll be looking for your feedback, fixing bugs and working on docs.
enableLegacyTemplate option to support <template> (e99d721)<ng-template>, deprecate <template> and template attribute (bf8eb41)locale option to ng-xi18n (234f059), closes #12303 #14537outFile option to ng-xi18n (39f56fa), closes #11416 #14508 #14657new Inject() optional for deps specified as InjectionToken (#14486) (d6a58f9), closes #10625RouteConfigLoadStart and RouteConfigLoadEnd events (78e8814)RootRenderer / Renderer (ccb636c)core: Because all lifecycle hooks are now interfaces the code that uses 'extends' keyword will no longer compile. Introduced by (ee747f7).
To migrate the code follow the example below:
Before:
@Component()
class SomeComponent extends OnInit {}
After:
@Component()
class SomeComponent implements OnInit {}
Based on our research we don't expect anyone to be affected by this change.
RootRenderer cannot be used any more, use RendererFactoryV2 instead. Introduced by (ccb636c).
Note: Renderer can still be injected/used, but is deprecated.
Note: the 4.0.0-rc.0 release on npm accidentally omitted one bug fix, so we cut rc.1 instead. oops :-)
<!-- CHANGELOG SPLIT MARKER --><a name="4.0.0-beta.8"></a>
AsyncPipe.transform() (#14367) (4da7925)ngc to bundle metadata (#14509) (3b89670)KeyValueDifferFactory and IterableDifferFactory no longer have ChangeDetectorRef as
a parameter. It was not used and has been there for historical reasons. If you call
DifferFactory.create(...) remove the ChangeDetectorRef argument. Introduced by (#14311).AsyncPipe and override
transform() might not compile correctly. The much more common use of async pipe in
templates is unaffected. We expect no or little impact on apps from this change, file an issue if we break you. Introduced by (#14367) (4da7925).
AsyncPipe that override transform() to include the type parameter overloads.<a name="2.4.8"></a>
ngOnChanges for interpolation bindings (#14400) (7c87c52)<a name="4.0.0-beta.7"></a>
profile buttons (#14345) (f6b5965)ngOnChanges for interpolation bindings (#14301) (1e3dd3d)$doCheck watcher when destroying upgraded component (#14303) (94312f0)<a name="2.4.7"></a>
<a name="4.0.0-beta.6"></a>
NgFor class and add a type parameter (#14104) (86b2b25)upgrade/static (#14037) (7670cc1)downgradeInjectable() (#14037) (1f90f29)Iterable<T> is now required to correctly compile
Angular applications. Support for Iterable<T> is not required at
runtime but a type definition Iterable<T> must be available.NgFor, and now NgForOf<T>, already supports Iterable<T> at
runtime. With this change the type definition is updated to reflect
this support.
Migration:
Part of #12398
upgrade/static/downgradeInjectable returned an array of the form:['dep1', 'dep2', ..., function factory(dep1, dep2, ...) { ... }]
Now it returns a function with an $inject property:
factory.$inject = ['dep1', 'dep2', ...];
function factory(dep1, dep2, ...) { ... }
It shouldn't affect the behavior of apps, since both forms are equally suitable to be used for registering AngularJS injectable services, but it is possible that type-checking might fail or that current code breaks if it relies on the returned value being an array.
<!-- CHANGELOG SPLIT MARKER --><a name="2.4.6"></a>
<a name="4.0.0-beta.5"></a>
OpaqueToken is now deprecated, use InjectionToken<T> instead.Injector.get(token: any, notFoundValue?: any): any is now deprecated
use the same method which is now overloaded as
Injector.get<T>(token: Type<T>|InjectionToken<T>, notFoundValue?: T): T;injector.get() is now parameterize it is possible that code
which used to work no longer type checks. Example would be if one
injects Foo but configures it as {provide: Foo, useClass: MockFoo}.
The injection instance will be that of MockFoo but the type will be
Foo instead of any as in the past. This means that it was possible
to call a method on MockFoo in the past which now will fail type
check. See this example:class Foo {}
class MockFoo extends Foo {
setupMock();
}
var PROVIDERS = [
{provide: Foo, useClass: MockFoo}
];
...
function myTest(injector: Injector) {
var foo = injector.get(Foo);
// This line used to work since `foo` used to be `any` before this
// change, it will now be `Foo`, and `Foo` does not have `setUpMock()`.
// The fix is to downcast: `injector.get(Foo) as MockFoo`.
foo.setUpMock();
}
<a name="2.4.5"></a>
<a name="4.0.0-beta.4"></a>
injector.get() is now parameterized it is possible that code
which used to work no longer type checks. Example would be if one
injects Foo but configures it as {provide: Foo, useClass: MockFoo}.
The injection instance will be that of MockFoo but the type will be
Foo instead of any as in the past. This means that it was possible
to call a method on MockFoo in the past which now will fail type
check. See this example:class Foo {}
class MockFoo extends Foo {
setupMock();
}
var PROVIDERS = [
{provide: Foo, useClass: MockFoo}
];
...
function myTest(injector: Injector) {
var foo = injector.get(Foo);
// This line used to work since `foo` used to be `any` before this
// change, it will now be `Foo`, and `Foo` does not have `setUpMock()`.
// The fix is to downcast: `injector.get(Foo) as MockFoo`.
foo.setUpMock();
}
<a name="2.4.4"></a>
<a name="4.0.0-beta.3"></a>
*directive="-...") (e5c6bb4), closes #13800target as attribute (d9a22da), closes #13837element value within transition events (4bae4b3)triggerName within the transition event (3f67ab0), closes #13600IterableChangeRecord is now an interface and parameterized on <V>.
This should not be an issue unless your code does
new IterableChangeRecord which it should not have a reason to do.KeyValueChangeRecord is now an interface and parameterized on <V>.
This should not be an issue unless your code does
new KeyValueChangeRecord which it should not have a reason to do.ngOutletContext. Use ngTemplateOutletContext instead.CollectionChangeRecord is renamed to IterableChangeRecord.
CollectionChangeRecord is aliased to IterableChangeRecord and is
marked as @deprecated. It will be removed in v6.x.x.DefaultIterableDiffer as it is private class which
was erroneously exposed.KeyValueDiffers#factories as it is private field which
was erroneously exposed.IterableDiffers#factories as it is private field which
was erroneously exposed.<a name="2.4.3"></a>
*directive="-...") (7dc12b9), closes #13800target as attribute (1c82b58), closes #13837<a name="2.4.2"></a>
NgForTrackBy (6be55cc), closes #13641ANALYZE_FOR_ENTRY_COMPONENTS with user classes (#13679) (230e33f), closes #13565<template> elements before their children. (#13677) (1cd73c7), closes #13118 #13167<a name="4.0.0-beta.2"></a>
.ngfactory.ts files to not need transitive deps for compiling .ngfactory.ts files. (#13524) (9c69703), closes #12787Note: 4.0.0-beta.2 release also contains all the changes present in the 2.4.2 release.
SimpleChange now takes an additional argument that defines whether this is the first
change or not. This is a low profile API and we don't expect anyone to be affected by this change.
If you are impacted by this change please file an issue. (465516b)<a name="4.0.0-beta.1"></a>
Note: 4.0.0-beta.1 release also contains all the changes present in the 2.4.0 and the 2.4.1 releases.
<!-- CHANGELOG SPLIT MARKER --><a name="2.4.1"></a>
@import in comments (#13368) (6316e5d), closes #12196<a name="2.4.0"></a>
}} when interpolation is disabled (#13531) (9b87bb6), closes #13525registerForNg1Tests (#13522) (c26c24c)[email protected] and unpin the rxjs peerDeps via ^5.0.1 (#13572) (8d5da1e), closes #13561 #13478<a name="4.0.0-beta.0"></a>
titlecase pipe (#13324) (61d7c1e), closes #11436Note: 4.0.0-beta.0 release also contains all the changes present in the 2.3.1 release.
<!-- CHANGELOG SPLIT MARKER --><a name="2.3.1"></a>
name property don’t break. (efa2d80), closes #13394 #13445select[multiple] retains selections (b3dcff0), closes #12527 #12654undefined (0a7364f), closes #13412 #13414Due to regression in the 2.3.0 release that was fixed by #13464, components that have been compiled using 2.3.0 and published to npm will need to be recompiled and republished.
The >=2.3.1 compiler will issue is the following error if it encounters components compiled with 2.3.0:
Unsupported metadata version 2 for module ${module}. This module should be compiled with a newer version of ngc.
We are adding more tests to our test suite to catch these kinds of problems before we cut a release.
<!-- CHANGELOG SPLIT MARKER --><a name="2.3.0"></a>
StaticSymbol correctly, not matter in which context (5614c4f)createLanguageServiceFromTypescript() (#13278) (25c2141), closes #13277CompilerHost from compiler-cli (#13189) (3ff6554)<a name="2.3.0-rc.0"></a>
@angular/tsc-wrapped (bccf0e6)tsc-wrapped (966bcba)cache operator (2d6a003), closes #13125<a name="2.2.4"></a>
<a name="2.2.3"></a>
@angular/tsc-wrapped (015ca47)<a name="2.2.2"></a>
@angular/tsc-wrapped (2fe6fb1)<a name="2.3.0-beta.0"></a>
attachView / detachView to ApplicationRef (9f7d32a), closes #9293ViewRef as ChangeDetectorRef (1b5384e), closes #12722Note: The 2.3.0-beta.0 release also contains all the changes present in the 2.2.1 release.
<!-- CHANGELOG SPLIT MARKER --><a name="2.2.1"></a>
ngTemplateOutlet in production mode (#12921) (4628798), closes #12911<a name="2.2.0"></a>
require in UpgradeComponent (fe1d0e2)DomAdapter nor zone for regular events (648ce59)array.push / array.pop instead of splice if possible (0fc11a4)DomAdapter any more (d708a88)NgSwitch - don’t create the default case if another case matches (#12726) (d8f23f4), closes #11297 #9420<a name="2.2.0-rc.0"></a>
<a name="2.1.2"></a>
<a name="2.2.0-beta.1"></a>
Note: The 2.2.0-beta.1 release also contains all the changes present in the 2.1.2 release.
<a name="2.2.0-beta.0"></a>
Note: The 2.2.0-beta.0 release also contains all the changes present in the 2.1.1 release.
<!-- CHANGELOG SPLIT MARKER --><a name="2.1.0"></a>
<ng-content> content (#12225) (df1718d):host:before and :host(:before) (#12171) (aa92512), closes #12165@HostBinding name (#12139) (13ecc14)<a name="2.1.0-rc.0"></a>
Note: 2.1.0-rc.0 release also contains all the changes present in the 2.0.2 release.
<!-- CHANGELOG SPLIT MARKER --><a name="2.1.0-beta.0"></a>
Note: 2.1.0-beta.0 release also contains all the changes present in the 2.0.1 release.
<!-- CHANGELOG SPLIT MARKER --><a name="2.0.2"></a>
:host(tag) and :host-context(tag) (a6bb84e0), closes #11972@page and @document CSS rules (#11878) (c99ef49), closes #11860[attr="value with space"] (bd012ef), closes #6249<x> ctype names (7578d85), closes #12000set() or append() (#12023) (adb17fe), closes #11624<a name="2.0.1"></a>
[attribute~=value] selector (#11696) (734b8b8), closes #9644<a name="2.0.0"></a>