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 destroying 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 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 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 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.
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.
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 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)