You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Andrew Scott, Billy Lando, George Kalpakas, Ian Gregory, Matt Shaffer, Rune Andersen Hartvig, dario-piotrowicz and mgechev
13.3.10 (2022-05-25)
Special Thanks
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
13.3.9 (2022-05-18)
This release contains API docs improvements.
Special Thanks
4javier, Bob Watson, Evan Lee, George Kalpakas, Joey Perrott, Pavan Kumar Jadda, celinetunc and mariu
Add resource files as roots to their associated projects (#45601)
Special Thanks
Andrew Kushnir, Andrew Scott, George Kalpakas, JayMartMedia, JoostK, Paul Gschwendtner, Ted.chang, Thomas Mair, Will 保哥, dario-piotrowicz, mgechev and ᚷᛁᛟᚱᚷᛁ ᛒᚨᛚᚨᚲᚻᚨᛞᛉᛖ
13.3.6 (2022-05-04)
Special Thanks
Andrew Kushnir, Andrew Scott, George Kalpakas, Paul Gschwendtner, Pawel Kozlowski, Ryan Day and dario-piotrowicz
two-way binding completion should not remove the trailing quote (#45582)
Special Thanks
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
avoid errors with extremely long instruction chains (#45574)
Special Thanks
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
handle inline type-check blocks in nullish coalescing extended check (#45478)
Special Thanks
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
Andrew Kushnir, Andrew Scott, Charles Lyding, Guillaume Bonnet, Jessica Janiuk, JoostK, Martin Sikora, Paul Gschwendtner, Theodore Brown, dario-piotrowicz and ivanwonder
Update the typed forms migration schematic to find all files. (#44881)
Special Thanks
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
13.2.0 (2022-01-26)
Deprecations
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.
Allow symbol keys for Routedata and resolve properties (#44519)
Special Thanks
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
I indroduced a minor error in a previous PR: pendingValue is a value not a boolean flag. (#44450)
Special Thanks
Aristeidis Bampakos, Dylan Hunn, George Kalpakas, JoostK, Kristiyan Kostadinov, Paul Gschwendtner, Spej, Yousaf Nawaz, dario-piotrowicz, faso-dev, jaybell and zuckjet
13.1.0 (2021-12-09)
Deprecations
The downgradeModule function calls with NgModule factories are deprecated. Please use NgModule class based downgradeModule calls instead.
common
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.
support NgModule class as an argument of the downgradeModule function (#43973)
Special Thanks
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
prevent componentless routes from being detached (#44240)
Special Thanks
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
13.0.2 (2021-11-17)
This release contains various API docs improvements.
Special Thanks
Andrew Kushnir, Armen Vardanyan, Dylan Hunn, Joey Perrott, Martin von Gagern, Paul Gschwendtner, Pete Bacon Darwin, Ramesh Thiruchelvam, dario-piotrowicz and fusho-takahashi
use correct parent in animation removeChild callback (#44033)
Special Thanks
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
support "associated message ids" for placeholders (#43534)
Special Thanks
Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Doug Parker, Dylan Hunn, George Kalpakas, Jessica Janiuk, Joey Perrott, Paul Gschwendtner and Pete Bacon Darwin
The behavior of the SpyLocation used by the RouterTestingModule has changed
to match the behavior of browsers. It no longer emits a 'popstate' event
when Location.go is called. In addition, simulateHashChange now
triggers both a hashchange and a popstate event.
Tests which use location.go and expect the changes to be picked up by
the Router should likely change to simulateHashChange instead.
Each test is different in what it attempts to assert so there is no
single change that works for all tests. Each test using the SpyLocation to
simulate browser URL changes should be evaluated on a case-by-case basis.
core
TypeScript versions older than 4.4.2 are no longer supported.
NodeJS versions older than v12.20.0 are no longer
supported due to the Angular packages using the NodeJS package exports
feature with subpath patterns.
The WrappedValue class can no longer be imported from @angular/core,
which may result in compile errors or failures at runtime if outdated
libraries are used that are still using WrappedValue. The usage of
WrappedValue should be removed as no replacement is available.
forms
A new type called FormControlStatus has been introduced, which is a union of all possible status strings for form controls. AbstractControl.status has been narrowed from string to FormControlStatus, and statusChanges has been narrowed from Observable<any> to Observable<FormControlStatus>. Most applications should consume the new types seamlessly. Any breakage caused by this change is likely due to one of the following two problems: (1) the app is comparing AbstractControl.status against a string which is not a valid status; or, (2) the app is using statusChanges events as if they were something other than strings.
router
The default url serializer would previously drop
everything after and including a question mark in query parameters. That
is, for a navigation to /path?q=hello?&other=123, the query
params would be parsed to just {q: 'hello'}. This is
incorrect because the URI spec allows for question mark characers in
query data. This change will now correctly parse the params for the
above example to be {v: 'hello?', other: '123'}.
Previously null and undefined inputs for routerLink were
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 RouterLinkhref 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 Routeand 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:
SpyNgModuleFactoryLoader
DeprecatedLoadChildren
The signature of the setupTestingRouter function from
@angular/core/testing has been changed to drop its NgModuleFactoryLoader
parameter, as an argument for that parameter can no longer be created.
service-worker
The return type of SwUpdate#activateUpdate and SwUpdate#checkForUpdate changed to Promise<boolean>.
Although unlikely, it is possible that this change will cause TypeScript type-checking to fail in
some cases. If necessary, update your types to account for the new
return type.
Deprecations
core
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).
In Ivy, AOT summary files are unused in TestBed. Passing AOT summary files in TestBed has no effect, so the aotSummaries usage in TestBed is deprecated and will be removed in a future version of Angular.
platform-server
The renderModuleFactory symbol in @angular/platform-server is no longer necessary as of Angular v13.
The renderModuleFactory calls can be replaced with renderModule.
service-worker
The SwUpdate#activated observable is deprecated.
The SwUpdate#activated observable only emits values as a direct response to calling
SwUpdate#activateUpdate() and was only useful for determining whether the call resulted in an
update or not. Now, the return value of SwUpdate#activateUpdate() can be used to determine the
outcome of the operation and therefore using SwUpdate#activated does not offer any benefit.
The SwUpdate#availalbe observable is deprecated.
The new SwUpdate#versionUpdates observable provides the same information and more. Therefore, it
is possible to rebuild the same behavior as SwUpdate#availalbe using the events emitted by
SwUpdate#versionUpdates and filtering for VersionReadyEvent events.
As a result, the SwUpdate#availalbe observable is now redundant.
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
support alternate UMD layout when adding new imports (#43931)
Special Thanks
Alan Agius, Andrew Kushnir, George Kalpakas, Jessica Janiuk, Joey Perrott, JoostK, Mladen Jakovljević, Virginia Dooley, amayer42, dirk diebel and ericcheng2005
Do not clear currentNavigation if already set to next one (#43852)
Special Thanks
Alan Agius, Andrew Kushnir, Andrew Scott, David Shevitz, George Kalpakas, Joe Martin (Crowdstaffing), Natalia Venditto, Pete Bacon Darwin, Younes Jaaidi and dario-piotrowicz
12.2.10 (2021-10-13)
Special Thanks
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
make ngsw.json generation deterministic and correct (#43679)
Special Thanks
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
do not unassign clients from a broken version (#43518)
Special Thanks
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
improve error message for missing animation trigger (#41356)
Special Thanks
Andrew Scott, Daniel Díaz, George Kalpakas, JoostK, Kristiyan Kostadinov, Mwiku, Pete Bacon Darwin, Teri Glover, Virginia Dooley, Xiaohanxu1996, dario-piotrowicz and kirjs
clear service worker cache in safety worker (#43324)
Special Thanks
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
fix: add more context to Unhandled Navigation Error (#43291)
Special Thanks:
Alan Agius, Charles Barnes, Enea Jahollari, George Kalpakas, Ikko Ashimine, Paul Gschwendtner, Pete Bacon Darwin, William Sedlacek and dario-piotrowicz
fix: eagerly update internal state on browser-triggered navigations (#43102)
Special Thanks:
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
fix(router): ensure check for match options is compatible with property renaming (#43086)
Special Thanks:
Amadou Sall, Andrew Kushnir, Andrew Scott, Daniel Trevino, Erik Slack, Fabien BERNARD, George Kalpakas, Jeroen van Warmerdam, Joey Perrott, Tim Gates and Vugar_Abdullayev
fix(language-service): global autocomplete doesn't work when the user tries to modify the symbol (#42923)
Special Thanks:
Alex Rickabaugh, Joe Martin, Joey Perrott, Kristiyan Kostadinov, Nichola Alkhouri, Paul Gschwendtner, Pete Bacon Darwin, atscott, dario-piotrowicz and ivanwonder
12.1.5 (2021-08-04)
This release contains various API docs improvements.
feat(router): ability to provide custom route reuse strategy via DI for RouterTestingModule (#42434)
Special Thanks:
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
fix(core): correctly handle null or undefined in ErrorHandler#handleError() (#42881)
Special Thanks:
Andrew Scott, Daniel Trevino, Dylan Hunn, George Kalpakas, Joey Perrott, JoostK, Paul Gschwendtner, Pete Bacon Darwin, Teri Glover, Vladyslav, Yuvaraj and codebriefcase
fix(core): use correct injector when resolving DI tokens from within a directive provider factory (#42886)
Special Thanks:
Alan Agius, Alex Rickabaugh, David Shevitz, George Kalpakas, Joey Perrott, JoostK, Krzysztof Kotowicz, Minko Gechev, Paul Gschwendtner and dario-piotrowicz
fix(service-worker): avoid storing redundant metadata for hashed assets (#42606)
Special Thanks:
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
fix(service-worker): avoid storing redundant metadata for hashed assets (#42606)
Special Thanks:
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
fix(platform-browser): in Meta.addTag() do not add duplicate meta tags (#42703)
Special Thanks:
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
fix(platform-browser): in Meta.addTag() do not add duplicate meta tags (#42703)
Special Thanks:
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
12.2.0-next.0 (2021-06-24)
This release contains the same set of changes as 12.1.0.
fix(service-worker): correctly determine client ID on navigation requests (#42607)
Special Thanks:
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
fix(language-service): Use last child end span for parent without close tag (#42554)
Special Thanks:
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
fix(language-service): Use last child end span for parent without close tag (#42554)
Special Thanks:
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
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
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
fix(compiler-cli): better detect classes that are indirectly exported (#42207)
Special Thanks:
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 不肖・高橋
fix(compiler-cli): better detect classes that are indirectly exported (#42207)
Special Thanks:
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 不肖・高橋
fix(platform-browser): update started state on reset (#41608)
Special Thanks:
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
fix(platform-browser): update started state on reset (#41608)
Special Thanks:
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
feat(language-service): Enable renaming of pipes (#40523)
Special Thanks:
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
fix(forms): registerOnValidatorChange should be called for ngModelGroup. (#41971)
Special Thanks:
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
Minified UMD bundles are no longer included in the distributed NPM packages.
animations: DOM elements are now correctly removed when the root view is removed.
If you are using SSR and use the app's HTML for rendering, you will need
to ensure that you save the HTML to a variable before destorying the
app.
It is also possible that tests could be accidentally relying on the old behavior by
trying to find an element that was not removed in a previous test. If
this is the case, the failing tests should be updated to ensure they
have proper setup code which initializes elements they rely on.
common: Methods of the PlatformLocation class, namely onPopState and onHashChange,
used to return void. Now those methods return functions that can be called
to remove event handlers.
common: The methods of the 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.
compiler-cli: Linked libraries no longer generate legacy i18n message ids. Any downstream
application that provides translations for these messages, will need to
migrate their message ids using the localize-migrate command line tool.
core: Angular no longer maintains support for node v10
core: Previously the 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 of 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.
core: Switching default of 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
changes the default to true.
core: The type of the 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 workaround 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.
forms: Previously 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.
platform-browser:XhrFactory has been moved from @angular/common/http to @angular/common.
Before
import{XhrFactory}from'@angular/common/http';
After
import{XhrFactory}from'@angular/common';
router: Strict null checks will report on fragment potentially being null.
Migration path: add null check.
router: The type of the 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.
11.2.14 (2021-05-12)
core
Commit
Description
5bb7c0ef3a
fix(core): do not retain dynamically compiled components and modules (#42003)
40cc29aa6e
fix(core): invoke profiler around ngOnDestroy lifecycle hooks (#41969)
platform-browser
Commit
Description
f66c9ae749
fix(platform-browser): prevent memory leak of style nodes if shadow DOM encapsulation is used (#42005)
Special Thanks:
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
12.1.0-next.1 (2021-05-05)
Bug Fixes
common: add body as an optional property on the options of HttpClient.delete (#19438) (#41723) (6b8baad)
compiler-cli: expose the linker as a Babel plugin (#41918) (6eafaa7)
core: minor improvements to listener instructions (#41807) (6581a1b)
BREAKING CHANGES
Minified UMD bundles are no longer included in the distributed NPM packages.
core: Angular no longer maintains support for node v10
core: Previously the 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 of 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.
compiler-cli: Linked libraries no longer generate legacy i18n message ids. Any downstream
application that provides translations for these messages, will need to
migrate their message ids using the localize-migrate command line tool.
forms: Mark the {[key: string]: any} type for the options property of the FormBuilder.group method as deprecated. Using AbstractControlOptions gives the same functionality and is type-safe.
compiler-cli: incorrectly type checking calls to implicit template variables (#39686) (e05cfdd), closes #39634 * compiler-cli: setComponentScope should only list used components/pipes (#39662) (8d317df) * core: handle !important in style property value (#39603) (978f081), closes #35323 * core: not inserting ViewContainerRef nodes when inside root of a component (#39599) (20db90a), closes #39556 * core: remove deprecated wtfZoneSpec from NgZone (#37864) (e02bea8), closes #33949
forms: more precise control cleanup (#39623) (050cea9)
http: queue jsonp <script> tag onLoad event handler in microtask (#39512) (10e4ac0), closes #39496
Performance Improvements
compiler: optimize computation of i18n message ids (#39694) (1891455)
compiler: use raw bytes to represent utf-8 encoded strings (#39694) (882ff8f)
compiler-cli: reduce filesystem hits during resource resolution (#39604) (a7adcbd)
service-worker: add the option to prefer network for navigation requests (#38565) (a206852), closes #38194
Performance Improvements
compiler-cli: only emit directive/pipe references that are used (#38539) (077f516)
compiler-cli: optimize computation of type-check scope information (#38539) (297c060)
compiler-cli: only generate template context declaration when used (#39321) (1ac0500)
core: do not recurse into modules that have already been registered (#39514) (5c13c67), closes #39487
router: use ngDevMode to tree-shake error messages in router (#38674) (db21c4f)
BREAKING CHANGES
common:
6acea54:
The locale data API has been marked as returning readonly arrays, rather than mutable arrays, since these arrays are shared across calls to the API.
If you were mutating them (e.g. calling 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.
26f2820:
When passing a date-time formatted string to the 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.
4744c22:
The 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.
4dfe0fa:
The typing of the 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.
7b2aac9:
The signatures of the number pipes now explicitly state which types are accepted.
This should only cause issues in corner cases, as any other values would result in runtime exceptions.
daf8b7f:
The signature of the 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.
5f815c0:
The 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.
c7d5555:
The case conversion pipes no longer let falsy values through.
They now map both 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.
compiler:
736e064:
TypeScript 3.9 is no longer supported, please upgrade to TypeScript 4.0.
compiler-cli:
0a16e60:
Expressions within ICUs are now type-checked again, fixing a regression in Ivy.
This may cause compilation failures if errors are found in expressions that appear within an ICU.
Please correct these expressions to resolve the type-check errors.
core:
fdea180:CollectionChangeRecord has been removed, use IterableChangeRecord instead.
c8f056b:
If you call 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.
4ca1c73:
In v10, IE 9, 10, and IE mobile support was deprecated.
In v11, Angular framework removes IE 9, 10, and IE mobile support completely.
Supporting outdated browsers like these increases bundle size, code complexity, and test load, and also requires time and effort that could be spent on improvements to the framework.
For example, fixing issues can be more difficult, as a straightforward fix for modern browsers could break old ones that have quirks due to not receiving updates from vendors.
4a1c12c:ViewEncapsulation.Native has been removed. Use ViewEncapsulation.ShadowDom instead.
Existing usages will be updated automatically by ng update.
forms:
d9fea85:
Previously if 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.
246de9a:
Directives in the @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.
f4f1bcc:
Type of 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.
platform-server:
b4e8399:
If you use 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.
platform-webworker:
93c3d8f:
@angular/platform-webworker and @angular/platform-webworker-dynamic have been removed as they were deprecated in v8.
router:
3817e5f:
This change corrects the argument order when calling 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.
e4f4d18:
While the new parameter types allow a variable of type 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.
837889f:
This commit changes the default value of 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.
c4becca:
The 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.
c4becca:enabled is deprecated as a valid value for the RouterModule.forRootinitialNavigation option.
enabledBlocking has been introduced to replace it.
783a5bd:preserveQueryParams has been removed, use queryParamsHandling: "preserve" instead.
b0b4953:
If you were accessing the RouterLink values of queryParams, fragment or queryParamsHandling you might need to relax the typing to also accept undefined and null.
Code Refactoring
compiler: remove support for TypeScript 3.9 (#39313) (736e064)
router: adjust type of parameter in navigateByUrl and createUrlTree to be more accurate (#38227) (e4f4d18), closes #18798