Skip to content

fix(deps): update angular monorepo to v16 (major)

This MR contains the following updates:

Package Type Update Change
@angular/animations dependencies major 14.2.12 -> 16.0.0
@angular/common dependencies major 14.2.12 -> 16.0.0
@angular/compiler dependencies major 14.2.12 -> 16.0.0
@angular/compiler-cli (source) devDependencies major 14.2.12 -> 16.0.0
@angular/core dependencies major 14.2.12 -> 16.0.0
@angular/forms dependencies major 14.2.12 -> 16.0.0
@angular/language-service devDependencies major 14.2.12 -> 16.0.0
@angular/localize dependencies major 14.2.12 -> 16.0.0
@angular/platform-browser dependencies major 14.2.12 -> 16.0.0
@angular/platform-browser-dynamic dependencies major 14.2.12 -> 16.0.0
@angular/router (source) dependencies major 14.2.12 -> 16.0.0

Release Notes

angular/angular

v16.0.0

Compare Source

Blog post "Angular v16 is now available".

Breaking Changes

  • Angular Compatibility Compiler (ngcc) has been removed and as a result Angular View Engine libraries will no longer work
  • Deprecated EventManager method addGlobalEventListener has been removed as it is not used by Ivy.
bazel
  • Several changes to the Angular Package Format (APF)
    • Removal of FESM2015
    • Replacing ES2020 with ES2022
    • Replacing FESM2020 with FESM2022
  • Several changes to the Angular Package Format (APF)
    • Removal of FESM2015
    • Replacing ES2020 with ES2022
    • Replacing FESM2020 with FESM2022
common
  • MockPlatformLocation is now provided by default in tests. Existing tests may have behaviors which rely on BrowserPlatformLocation instead. For example, direct access to the window.history in either the test or the component rather than going through the Angular APIs (Location.getState()). The quickest fix is to update the providers in the test suite to override the provider again TestBed.configureTestingModule({providers: [{provide: PlatformLocation, useClass: BrowserPlatformLocation}]}). The ideal fix would be to update the code to instead be compatible with MockPlatformLocation instead.
  • If the 'ngTemplateOutletContext' is different from the context, it will result in a compile-time error.

Before the change, the following template was compiling:

interface MyContext {
  $implicit: string;
}

@​Component({
  standalone: true,
  imports: [NgTemplateOutlet],
  selector: 'person',
  template: `
    <ng-container
      *ngTemplateOutlet="
        myTemplateRef;
        context: { $implicit: 'test', xxx: 'xxx' }
      "></ng-container>
  `,
})
export class PersonComponent {
  myTemplateRef!: TemplateRef<MyContext>;
}

However, it does not compile now because the 'xxx' property does not exist in 'MyContext', resulting in the error: 'Type '{ $implicit: string; xxx: string; }' is not assignable to type 'MyContext'.'

The solution is either:

  • add the 'xxx' property to 'MyContext' with the correct type or
  • add 'any(...)' inside the template to make the error disappear. However, adding 'any(...)' does not correct the error but only preserves the previous behavior of the code.
  • Deprecated XhrFactory export from @angular/common/http has been removed. Use XhrFactory from @angular/common instead.
compiler
    • TypeScript 4.8 is no longer supported.
core
  • QueryList.filter now supports type guard functions, which will result in type narrowing. Previously if you used type guard functions, it resulted in no changes to the return type. Now the type would be narrowed, which might require updates to the application code that relied on the old behavior.

  • zone.js versions 0.11.x and 0.12.x are not longer supported.

    • entryComponents has been deleted from the @NgModule and @Component public APIs. Any usages can be removed since they weren't doing anyting.
    • ANALYZE_FOR_ENTRY_COMPONENTS injection token has been deleted. Any references can be removed.
  • ComponentRef.setInput will only set the input on the component if it is different from the previous value (based on Object.is equality). If code relies on the input always being set, it should be updated to copy objects or wrap primitives in order to ensure the input value differs from the previous call to setInput.

  • RendererType2.styles no longer accepts a nested arrays.

  • The APP_ID token value is no longer randomly generated. If you are bootstrapping multiple application on the same page you will need to set to provide the APP_ID yourself.

    bootstrapApplication(ComponentA, {
      providers: [
       { provide: APP_ID, useValue: 'app-a' },
       // ... other providers ...
      ]
    });
  • The ReflectiveInjector and related symbols were removed. Please update the code to avoid references to the ReflectiveInjector symbol. Use Injector.create as a replacement to create an injector instead.

  • Node.js v14 support has been removed

    Node.js v14 is planned to be End-of-Life on 2023-04-30. Angular will stop supporting Node.js v14 in Angular v16. Angular v16 will continue to officially support Node.js versions v16 and v18.

platform-browser
  • The deprecated BrowserTransferStateModule was removed, since it's no longer needed. The TransferState class can be injected without providing the module. The BrowserTransferStateModule was empty starting from v14 and you can just remove the reference to that module from your applications.
platform-server
  • Users that are using SSR with JIT mode will now need to add import to @&#8203;angular/compiler before bootstrapping the application.

    NOTE: this does not effect users using the Angular CLI.

  • renderApplication method no longer accepts a root component as first argument. Instead, provide a bootstrapping function that returns a Promise<ApplicationRef>.

    Before

    const output: string = await renderApplication(RootComponent, options);

    Now

    const bootstrap = () => bootstrapApplication(RootComponent, appConfig);
    const output: string = await renderApplication(bootstrap, options);
  • renderModuleFactory has been removed. Use renderModule instead.

router
  • The Scroll event's routerEvent property may also be a NavigationSkipped event. Previously, it was only a NavigationEnd event.
  • ComponentFactoryResolver has been removed from Router APIs. Component factories are not required to create an instance of a component dynamically. Passing a factory resolver via resolver argument is no longer needed and code can instead use ViewContainerRef.createComponent without the factory resolver.
  • The RouterEvent type is no longer present in the Event union type representing all router event types. If you have code using something like filter((e: Event): e is RouterEvent => e instanceof RouterEvent), you'll need to update it to filter((e: Event|RouterEvent): e is RouterEvent => e instanceof RouterEvent).
  • Tests which mock ActivatedRoute instances may need to be adjusted because Router.createUrlTree now does the right thing in more scenarios. This means that tests with invalid/incomplete ActivatedRoute mocks may behave differently than before. Additionally, tests may now navigate to a real URL where before they would navigate to the root. Ensure that tests provide expected routes to match. There is rarely production impact, but it has been found that relative navigations when using an ActivatedRoute that does not appear in the current router state were effectively ignored in the past. By creating the correct URLs, this sometimes resulted in different navigation behavior in the application. Most often, this happens when attempting to create a navigation that only updates query params using an empty command array, for example router.navigate([], {relativeTo: route, queryParams: newQueryParams}). In this case, the relativeTo property should be removed.

Deprecations

core
  • makeStateKey, StateKey and TransferState exports have been moved from @angular/platform-browser to @angular/core. Please update the imports.
- import {makeStateKey, StateKey, TransferState} from '@&#8203;angular/platform-browser';
+ import {makeStateKey, StateKey, TransferState} from '@&#8203;angular/core';
  • EnvironmentInjector.runInContext is now deprecated, with runInInjectionContext functioning as a direct replacement:

    // Previous method version (deprecated):
    envInjector.runInContext(fn);
    // New standalone function:
    runInInjectionContext(envInjector, fn);
  • The @Directive/@Component moduleId property is now deprecated. It did not have any effect for multiple major versions and will be removed in v17.

platform-browser
  • BrowserModule.withServerTransition has been deprecated. APP_ID should be used instead to set the application ID. NB: Unless, you render multiple Angular applications on the same page, setting an application ID is not necessary.

    Before:

    imports: [
      BrowserModule.withServerTransition({ appId: 'serverApp' }),
      ...
    ]

    After:

    imports: [
      BrowserModule,
      { provide: APP_ID, useValue: 'serverApp' },
      ...
    ],
  • ApplicationConfig has moved, please import ApplicationConfig from @angular/core instead.

platform-server
  • PlatformConfig.baseUrl and PlatformConfig.useAbsoluteUrl platform-server config options are deprecated as these were not used.
Commit Type Description
48aa96ea13 refactor remove Angular Compatibility Compiler (ngcc) (#​49101)
2703fd6260 refactor remove deprecated EventManager method addGlobalEventListener (#​49645)
common
Commit Type Description
5dce2a5a3a feat Provide MockPlatformLocation by default in BrowserTestingModule (#​49137)
d47fef72cb fix strict type checking for ngtemplateoutlet (#​48374)
c41a21658c refactor remove deprecated XhrFactory export from http entrypoint (#​49251)
compiler
Commit Type Description
1a6ca68154 feat add support for compile-time required inputs (#​49304)
13dd614cd1 feat add support for compile-time required inputs (#​49453)
8f539c11f4 feat add support for compile-time required inputs (#​49468)
79cdfeb392 feat drop support for TypeScript 4.8 (#​49155)
1407a9aeaf feat support multiple configuration files in extends (#​49125)
9de1e9da8f fix incorrectly matching directives on attribute bindings (#​49713)
6623810e4d fix Produce diagnositc if directive used in host binding is not exported (#​49527)
compiler-cli
Commit Type Description
03d1d00ad9 feat Add an extended diagnostic for nSkipHydration (#​49512)
ed817e32fe fix Catch FatalDiagnosticError during template type checking (#​49527)
49fe974501 perf optimize NgModule emit for standalone components (#​49837)
core
Commit Type Description
89d291c367 feat add assertInInjectionContext (#​49529)
4e9531f777 feat add mergeApplicationConfig method (#​49253)
d7d6514add feat Add ability to configure NgZone in bootstrapApplication (#​49557)
bc5ddabdcb feat add Angular Signals to the public API (#​49150)
17e9862653 feat add API to provide CSP nonce for inline stylesheets (#​49444)
605c536420 feat add migration to remove moduleId references (#​49496)
99d874fe3b feat add support for TypeScript 5.0 (#​49126)
d1617c449d feat allow removal of previously registered DestroyRef callbacks (#​49493)
b2327f4df1 feat Allow typeguards on QueryList.filter (#​48042)
061f3d1086 feat Drop public factories property for IterableDiffers : Breaking change (#​49598)
fdf61974d1 feat drop support for zone.js versions <=0.12.0 (#​49331)
9c5fd50de4 feat effects can optionally return a cleanup function (#​49625)
c024574f46 feat expose makeStateKey, StateKey and TransferState (#​49563)
a5f1737d1c feat expose onDestroy on ApplicationRef (#​49677)
e883198460 feat implement takeUntilDestroyed in rxjs-interop (#​49154)
0814f20594 feat introduce runInInjectionContext and deprecate prior version (#​49396)
0f5c8003cc feat introduce concept of DestroyRef (#​49158)
9b65b84cb9 feat Mark components for check if they read a signal (#​49153)
8997bdc03b feat prototype implementation of @​angular/core/rxjs-interop (#​49154)
585e34bf6c feat remove entryComponents (#​49484)
aad05ebeb4 feat support usage of non-experimental decorators with TypeScript 5.0 (#​49492)
6d7be42da7 fix add newline to hydration mismatch error (#​49965)
f8e25864e8 fix allow async functions in effects (#​49783)
84216dabfc fix catch errors from source signals outside of .next (#​49769)
be23b7ce65 fix ComponentRef.setInput only sets input when not equal to previous (#​49607)
316c91b1a4 fix deprecate moduleId @Component property (#​49496)
fd9dcd36cd fix Ensure effects can be created when Zone is not defined (#​49890)
9180f98f0e fix ensure takeUntilDestroyed unregisters onDestroy listener on unsubscribe (#​49901)
4721c48a24 fix error if document body is null (#​49818)
2650f1afc1 fix execute input setters in non-reactive context (#​49906)
f8b95b9da6 fix execute query setters in non-reactive context (#​49906)
ef91a2e0fe fix execute template creation in non-reactive context (#​49883)
87549af73c fix Fix capitalization of toObservableOptions (#​49832)
0e5f9ba6f4 fix generate consistent component IDs (#​48253)
fedc75624c fix include inner ViewContainerRef anchor nodes into ViewRef.rootNodes output (#​49867)
df1dfc4c17 fix make sure that lifecycle hooks are not tracked (#​49701)
c34d7e0822 fix onDestroy should be registered only on valid DestroyRef (#​49804)
2f2ef14f9e fix resolve InitialRenderPendingTasks promise on complete (#​49784)
c7d8d3ee37 fix toObservable should allow writes to signals in the effect (#​49769)
b4531f1d82 fix typing of TestBed Common token. (#​49997)
a4e749ffca fix When using setInput, mark view dirty in same was as markForCheck (#​49711)
9b9c818f99 perf change RendererType2.styles to accept a only a flat array (#​49072)
82d6fbb109 refactor generate a static application ID (#​49422)
3b863ddc1e refactor Remove ReflectiveInjector symbol (#​48103)
f594725951 refactor remove Node.js v14 support (#​49255)
forms
Commit Type Description
07a1aa3004 feat Improve typings form (async)Validators (#​48679)
http
Commit Type Description
aff1512950 feat allow HttpClient to cache requests (#​49509)
15c91a53ae fix delay accessing pendingTasks.whenAllTasksComplete (#​49784)
9f0c6d1ed1 fix ensure new cache state is returned on each request (#​49749)
45a6ac09fd fix force macro task creation during HTTP request (#​49546)
2a580b6f0b fix HTTP cache was being disabled prematurely (#​49826)
2eb9b8b402 fix wait for all XHR requests to finish before stabilizing application (#​49776)
migrations
Commit Type Description
5e5dac278d feat Migration to remove Router guard and resolver interfaces (#​49337)
platform-browser
Commit Type Description
761e02d912 feat add a public API function to enable non-destructive hydration (#​49666)
630af63fae feat deprecate withServerTransition call (#​49422)
81e7d15ef6 feat enable HTTP request caching when using provideClientHydration (#​49699)
74c925c19c fix export deprecated TransferState as type (#​50015)
2312eb53ef fix KeyEventsPlugin should keep the same behavior (#​49330)
c934a8e72b fix only add ng-app-id to style on server side (#​49465)
9165ff2517 fix reuse server generated component styles (#​48253)
e8e36811d5 fix set nonce attribute in a platform compatible way (#​49624)
3aa85a8087 refactor move ApplicationConfig to core (#​49253)
9bd9a11f4e refactor remove deprecated BrowserTransferStateModule symbol (#​49718)
platform-server
Commit Type Description
b5278cc115 feat renderApplication now accepts a bootstrapping method (#​49248)
056d68002f feat add provideServerSupport function to provide server capabilities to an application (#​49380)
7870fb07fe feat rename provideServerSupport to provideServerRendering (#​49678)
a08a8ff108 fix bundle @​angular/domino in via esbuild (#​49229)
5ea624f313 fix remove dependency on @angular/platform-browser-dynamic (#​50064)
e99460865e refactor deprecate useAbsoluteUrl and baseUrl (#​49546)
41f27ad086 refactor remove renderApplication overload that accepts a component (#​49463)
17abe6dc96 refactor remove deprecated renderModuleFactory (#​49247)
router
Commit Type Description
ea32c3289a feat Expose information about the last successful Navigation (#​49235)
455c728525 feat helper functions to convert class guards to functional (#​48709)
f982a3f965 feat Opt-in for binding Router information to component inputs (#​49633)
1f055b90b6 fix Ensure anchor scrolling happens on ignored same URL navigations (#​48025)
6193a3d406 fix fix = not parsed in router segment name (#​47332)
c0b1b7becf fix Remove deprecated ComponentFactoryResolver from APIs (#​49239)
1e32709e0e fix remove RouterEvent from Event union type (#​46061)
3c7e637374 fix Route matching should only happen once when navigating (#​49163)
1600687fe5 fix Route matching should only happen once when navigating (#​49163)
31f210bf2c fix Router.createUrlTree should work with any ActivatedRoute (#​48508)
service-worker
Commit Type Description
5e7fc259ea feat add function to provide service worker (#​48247)

v15.2.9

Compare Source

common
Commit Type Description
9107e931ca fix fix incorrectly reported distortion for padded images (#​49889)
compiler-cli
Commit Type Description
7c58885797 fix catch fatal diagnostic when getting diagnostics for components (#​50046)

v15.2.8

Compare Source

core
Commit Type Description
2fff8fadbe fix handle invalid classes in class array bindings (#​49924)
http
Commit Type Description
05a0225deb fix prevent headers from throwing an error when initializing numerical values (#​49379)
router
Commit Type Description
09a42d988e fix canceledNavigationResolution: 'computed' with redirects to the current URL (#​49793)

v15.2.7

Compare Source

compiler
Commit Type Description
b0c1a90f55 fix Produce diagnositc if directive used in host binding is not exported (#​49792)
compiler-cli
Commit Type Description
a40529af2e fix Catch FatalDiagnosticError during template type checking (#​49792)
core
Commit Type Description
702ec90110 fix When using setInput, mark view dirty in same way as markForCheck (#​49747)

Special Thanks

Alan Agius, Andrew Kushnir, Andrew Scott, Kristiyan Kostadinov, Matthieu Riegler and Nikola Kološnjaji

v15.2.6

Compare Source

core
Commit Type Description
d9efa1b0d7 feat change the URL sanitization to only block javascript: URLs (#​49659)
router
Commit Type Description
cad7274ef9 fix create correct URL relative to path with empty child (#​49691)
9b61379096 fix Ensure initial navigation clears current navigation when blocking (#​49572)

Special Thanks

Andrew Scott, Guillaume Weghsteen, John Manners, Johnny Gérard, Matthieu Riegler, Robin Richtsfeld, Sandra Limacher, Sarthak Thakkar, Vinit Neogi and vikram menon

v15.2.5

Compare Source

common
Commit Type Description
ca5acadb78 fix invalid ImageKit transformation (#​49201)
compiler
Commit Type Description
077f6b4674 fix do not unquote CSS values (#​49460)
c3cff35869 fix handle trailing comma in object literal (#​49535)
core
Commit Type Description
d201fc2dec fix set style property value to empty string instead of an invalid value (#​49460)
router
Commit Type Description
978d37f324 fix Ensure Router preloading works with lazy component and static children (#​49571)
a844435514 fix fix #​49457 outlet activating with old info (#​49459)

Special Thanks

Alan Agius, Andrew Scott, Asaf Malin, Jan Cabadaj, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Sid and Tano Abeleyra

v15.2.4

Compare Source

core
Commit Type Description
bae6b5ceb1 fix Allow TestBed.configureTestingModule to work with recursive cycle of standalone components. (#​49473)
087f4412af fix more accurate matching of classes during content projection (#​48888)

Special Thanks

Aditya Srinivasan, Alex Rickabaugh, Andrew Scott, Kristiyan Kostadinov, Masaoki Kobayashi, Matthieu Riegler, Paul Gschwendtner, Peter Götz, Thomas Pischke, Virginia Dooley and avmaxim

v15.2.3

Compare Source

Special Thanks

Alan Agius, Esteban Gehring, Matthieu Riegler and Virginia Dooley

v15.2.2

Compare Source

migrations
Commit Type Description
6207d6f1f0 fix add protractor support if protractor imports are detected (#​49274)

Special Thanks

Alan Agius, Andrew Kushnir, Andrew Scott, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Sai Kartheek Bommisetty and Vinit Neogi

v15.2.1

Compare Source

common
Commit Type Description
f0e926074d fix make Location.normalize() return the correct path when the base path contains characters that interfere with regex syntax. (#​49181)
compiler-cli
Commit Type Description
04d8b6c61a fix do not persist component analysis if template/styles are missing (#​49184)
core
Commit Type Description
d60ea6ab5a fix update zone.js peerDependencies ranges (#​49244)
migrations
Commit Type Description
44d095a61c fix avoid migrating the same class multiple times in standalone migration (#​49245)
92b0bda9e4 fix delete barrel exports in standalone migration (#​49176)
router
Commit Type Description
3062442728 fix add error message when using loadComponent with a NgModule (#​49164)

Special Thanks

Alan Agius, Andrew Kushnir, Aristeidis Bampakos, Craig Spence, Doug Parker, Iván Navarro, Joey Perrott, Kristiyan Kostadinov, Matthieu Riegler, Michael Ziluck, Paul Gschwendtner, Stephanie Tuerk, Vincent and Virginia Dooley

v15.2.0

Compare Source

Deprecations

  • Class and InjectionToken guards and resolvers are deprecated. Instead, write guards as plain JavaScript functions and inject dependencies with inject from @angular/core.
Commit Type Description
926c35f4ac docs Deprecate class and InjectionToken and resolvers (#​47924)
common
Commit Type Description
54b24eb40f feat Add loaderParams attribute to NgOptimizedImage (#​48907)
compiler-cli
Commit Type Description
0cf11167f1 fix incorrectly detecting forward refs when symbol already exists in file (#​48988)
core
Commit Type Description
a154db8a81 feat add ng generate schematic to convert declarations to standalone (#​48790)
345e737daa feat add ng generate schematic to convert to standalone bootstrapping APIs (#​48848)
e7318fc758 feat add ng generate schematic to remove unnecessary modules (#​48832)
language-service
Commit Type Description
4ae384fd61 feat Allow auto-imports of a pipe via quick fix when its selector is used, both directly and via reexports. (#​48354)
141333411e feat Introduce a new NgModuleIndex, and use it to suggest re-exports. (#​48354)
d0145033bd fix generate forwardRef for same file imports (#​48898)
migrations
Commit Type Description
2796230e95 fix add enum in mode option in standalone schema (#​48851)
816e76a578 fix automatically prune root module after bootstrap step (#​49030)
bdbf21d04b fix avoid generating imports with forward slashes (#​48993)
32cf4e5cb9 fix avoid internal modules when generating imports (#​48958)
521ccfbe6c fix avoid interrupting the migration if language service lookup fails (#​49010)
a40cd47aa7 fix avoid modifying testing modules without declarations (#​48921)
1afa6ed322 fix don't add ModuleWithProviders to standalone test components (#​48987)
c98c6a8452 fix don't copy animations modules into the imports of test components (#​49147)
8389557848 fix don't copy unmigrated declarations into imports array (#​48882)
f82bdc4b01 fix don't delete classes that may provide dependencies transitively (#​48866)
759db12e0b fix duplicated comments on migrated classes (#​48966)
ba38178d19 fix generate forwardRef for same file imports (#​48898)
03fcb36cfd fix migrate HttpClientModule to provideHttpClient() (#​48949)
2de6dae16d fix migrate RouterModule.forRoot with a config object to use features (#​48935)
770191cf1f fix migrate tests when switching to standalone bootstrap API (#​48987)
c7926b5773 fix move standalone migrations into imports (#​48987)
65c74ed93e fix normalize paths to posix (#​48850)
6377487b1a fix only exclude bootstrapped declarations from initial standalone migration (#​48987)
e9e4449a43 fix preserve tsconfig in standalone migration (#​48987)
ffad1b49d9 fix reduce number of files that need to be checked (#​48987)
ba7a757cc5 fix return correct alias when conflicting import exists (#​49139)
49a7c9f94a fix standalone migration incorrectly throwing path error for multi app projects (#​48958)
584976e6c8 fix support --defaults in standalone migration (#​48921)
03f47ac901 fix use consistent quotes in generated imports (#​48876)
ebae506d89 fix use import remapper in root component (#​49046)
40c976c909 fix use NgForOf instead of NgFor (#​49022)
4ac25b2aff perf avoid re-traversing nodes when resolving bootstrap call dependencies (#​49010)
26cb7ab2e6 perf speed up language service lookups (#​49010)
platform-browser
Commit Type Description
bf4ad38117 fix remove styles from DOM of destroyed components (#​48298)
platform-server
Commit Type Description
25e220a23a fix avoid duplicate TransferState info after renderApplication call (#​49094)
router
Commit Type Description
31b94c762f feat Add a withNavigationErrorHandler feature to provideRouter (#​48551)
dedac8d3f7 feat Add test helper for trigger navigations in tests (#​48552)

Special Thanks

Alan Agius, Alex Castle, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Dylan Hunn, Ikko Eltociear Ashimine, Ilyass, Jessica Janiuk, Joey Perrott, John Manners, Kalbarczyk, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Virginia Dooley, Walid Bouguima, cexbrayat and mgechev

v15.1.5

Compare Source

forms
Commit Type Description
5f2a3edcf2 fix Make radio buttons respect [attr.disabled] (#​48864)

Special Thanks

AleksanderBodurri, Alvaro Junqueira, Dylan Hunn, Joey Perrott, Matthieu Riegler, PaloMiklo and Paul Gschwendtner

v15.1.4

Compare Source

Special Thanks

Jessica Janiuk, Kian Yang Lee, Matthieu Riegler, Redouane Bekkouche and Simona Cotin

v15.1.3

Compare Source

animations
Commit Type Description
d36dfd4b62 fix fix non-animatable warnings for easing (#​48583)
common
Commit Type Description
a334e4efbe fix warn if using ngSrcset without a configured image loader (#​48804)
compiler
Commit Type Description
171b4d4640 fix incorrect code when non-null assertion is used after a safe access (#​48801)
migrations
Commit Type Description
9e86dd231b fix Fixed file format issue with lint (#​48859)
af31f98b00 fix migration host incorrectly reading empty files (#​48849)
platform-server
Commit Type Description
73972c684e fix insert transfer state script before other script tags (#​48868)
router
Commit Type Description
d5b2c249a3 fix Handle routerLink directive on svg anchors. (#​48857)

Special Thanks

Alan Agius, Besim Gürbüz, Brecht Billiet, Dario Piotrowicz, Dylan Hunn, Iván Navarro, Jessica Janiuk, Kristiyan Kostadinov, Matthieu Riegler, Onkar Ruikar, Payam Valadkhan, Santosh Yadav, Virginia Dooley and Walid Bouguima

v15.1.2

Compare Source

compiler
Commit Type Description
98ccb57117 fix handle css selectors with space after an escaped character. (#​48558)
compiler-cli
Commit Type Description
145f848a10 fix resolve deprecation warning (#​48812)
router
Commit Type Description
a6b10f6e59 fix 'createUrlTreeFromSnapshot' with empty paths and named outlets (#​48734)

Special Thanks

Alan Agius, AleksanderBodurri, Andrew Kushnir, Andrew Scott, Charles Lyding, Dylan Hunn, JoostK, Matthieu Riegler, Paul Gschwendtner, Payam Valadkhan, Virginia Dooley, Yann Thomas LE MOIGNE and dario-piotrowicz

v15.1.1

Compare Source

common
Commit Type Description
68ce4f6ab4 fix Update Location to get a normalized URL valid in case a represented URL starts with the substring equals APP_BASE_HREF (#​48489)
032b2bd689 perf avoid excessive DOM mutation in NgClass (#​48433)
core
Commit Type Description
dd54f6bd96 fix makeEnvironmentProviders should accept EnvironmentProviders (#​48720)

Special Thanks

Alan Agius, Alex Rickabaugh, Andrew Scott, Aristeidis Bampakos, Bob Watson, Jens, Konstantin Kharitonov, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Vladyslav Slipchenko, ced, dario-piotrowicz, mgechev and ノウラ

v15.1.0

Compare Source

Deprecations

router
  • CanLoad guards in the Router are deprecated. Use CanMatch instead.

  • router writable properties

    The following strategies are meant to be configured by registering the application strategy in DI via the providers in the root NgModule or bootstrapApplication:

    • routeReuseStrategy
    • titleStrategy
    • urlHandlingStrategy

    The following options are meant to be configured using the options available in RouterModule.forRoot or provideRouter.

    • onSameUrlNavigation
    • paramsInheritanceStrategy
    • urlUpdateStrategy
    • canceledNavigationResolution

    The following options are available in RouterModule.forRoot but not available in provideRouter:

    • malformedUriErrorHandler - This was found to not be used anywhere internally.
    • errorHandler - Developers can instead subscribe to Router.events and filter for NavigationError.
common
Commit Type Description
fe50813664 feat Add BrowserPlatformLocation to the public API (#​48488)
2f4f0638c7 fix Add data attribtue to NgOptimizedImage (#​48497)
compiler
Commit Type Description
a532d71975 feat allow self-closing tags on custom elements (#​48535)
caf7228f8a fix resolve deprecation warning (#​48652)
33f35b04ef fix type-only symbols incorrectly retained when downlevelling custom decorators (#​48638)
compiler-cli
Commit Type Description
caedef0f5b fix update @babel/core dependency and lock version (#​48634)
core
Commit Type Description
6acae1477a feat Add TestBed.runInInjectionContext to help test functions which use inject (#​47955)
38421578a2 feat Make the isStandalone() function available in public API (#​48114)
dd42974b07 feat support TypeScript 4.9 (#​48005)
forms
Commit Type Description
8aa8b4b77c fix Form provider FormsModule.withConfig return a FormsModule (#​48526)
language-service
Commit Type Description
5f0b53c735 feat Allow auto-imports to suggest multiple possible imports. (#​47787)
6a8ea29a04 fix expose package.json for vscode extension resolution (#​48678)
ce8160ecb2 fix Prevent crashes on unemitable references (#​47938)
e615b598ba fix ship /api entry-point (#​48670)
6ce7d76a0e fix update packages/language-service/build.sh script to work with vscode-ng-language-service's new Bazel build (#​48663)
localize
Commit Type Description
a1a8e91eca fix add triple slash type reference on @angular/localize on `ng add (#​48502)
migrations
Commit Type Description
cc284afbbc fix combine newly-added imports in import manager (#​48620)
router
Commit Type Description
228e992db7 docs Deprecate canLoad guards in favor of canMatch (#​48180)
0a8b8a66cd docs Deprecate public members of Router that are meant to be configured elsewhere (#​48006)
332461bd0c feat Add ability to override onSameUrlNavigation default per-navigation (#​48050)
f58ad86e51 feat Add feature provider for enabling hash navigation (#​48301)
73f03ad2d2 feat Add new NavigationSkipped event for ignored navigations (#​48024)
3fe75710d9 fix page refresh should not destroy history state (#​48540)

Special Thanks

Alan Agius, Alex Castle, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Bob Watson, Charles Lyding, Derek Cormier, Doug Parker, Dylan Hunn, George Kalpakas, Greg Magolan, Jessica Janiuk, JiaLiPassion, Joey Perrott, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Renan Ferro, Tim Gates, Vadim, Virginia Dooley, ced, mgechev, piyush132000, robertIsaac and sr5434

v15.0.4

Compare Source

animations
Commit Type Description
6c1064c72f fix fix incorrect handling of camel-case css properties (#​48436)
common
Commit Type Description
f30d18a942 fix Fix TestBed.overrideProvider type to include multi (#​48424)
compiler-cli
Commit Type Description
b55d2dab5d fix evaluate const tuple types statically (#​48091)

Special Thanks

Alan Agius, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Bob Watson, BrowserPerson, Jens, Jessica Janiuk, Joey Perrott, JoostK, Konstantin Kharitonov, Lukas Matta, Piotr Kowalski, Virginia Dooley, Yannick Baron, dario-piotrowicz, lsst25, piyush132000 and why520crazy

v15.0.3

Compare Source

common
Commit Type Description
50b1c2bf52 fix Don't generate srcsets with very large sources (#​47997)
bf44dc234a fix Update Location to support base href containing origin (#​48327)
compiler
Commit Type Description
9a5d84249a fix make sure selectors inside container queries are correctly scoped (#​48353)
compiler-cli
Commit Type Description
167bc0d163 fix Produce diagnostic rather than crash when using invalid hostDirective (#​48314)
core
Commit Type Description
e4dcaa513e fix unable to inject ChangeDetectorRef inside host directives (#​48355)

Special Thanks

Alan Agius, Alex Castle, Andrew Kushnir, Andrew Scott, Bob Watson, Derek Cormier, Joey Perrott, Konstantin Kharitonov, Kristiyan Kostadinov, Paul Gschwendtner, Pawel Kozlowski, dario-piotrowicz and piyush132000

v15.0.2

Compare Source

compiler-cli
Commit Type Description
86a21f5569 fix accept inheriting the constructor from a class in a library (#​48156)

Special Thanks

Alan Agius, Andrew Scott, Aristeidis Bampakos, Bob Watson, Derek Cormier, JoostK, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Rokas Brazdžionis, mgechev and piyush132000

v15.0.1

Compare Source

common
Commit Type Description
930af9dd26 fix Fix MockPlatformLocation events and missing onPopState implementation (#​48113)
forms
Commit Type Description
b342e55509 fix don't mutate validators array (#​47830)
a12a120272 fix FormBuilder.group return right type with shorthand parameters. (#​48084)
language-service
Commit Type Description
cc8b76ef7c fix correctly handle host directive inputs/outputs (#​48147)
a8c33bf931 fix update packages/language-service/build.sh script to work with vscode-ng-language-service's new Bazel build (#​48120)
router
Commit Type Description
e4309d57d8 fix correct type of nextState parameter in canDeactivate (#​48038)
9baefd085f fix Ensure renavigating in component init works with enabledBlocking (#​48063)
fa5528fb5f fix restore 'history.state' on popstate even if navigationId missing (#​48033)

Special Thanks

Alan Agius, Andrew Scott, Bjarki, Bob Watson, Brooke, Derek Cormier, Dylan Hunn, George Kalpakas, Greg Magolan, Ikko Ashimine, Ivan Rodriguez, Jessica Janiuk, Joe Roxbury, Joey Perrott, Kristiyan Kostadinov, Matthieu Riegler, Mikhail Savchuk, Nebojsa Cvetkovic, Pawel Kozlowski, Volodymyr and Wooshaah

v15.0.0

Compare Source

Blog post "Angular v15 is now available".

Breaking Changes

compiler
  • Keyframes names are now prefixed with the component's "scope name". For example, the following keyframes rule in a component definition, whose "scope name" is host-my-cmp:

    @​keyframes foo { ... }

    will become:

    @​keyframes host-my-cmp_foo { ... }

    Any TypeScript/JavaScript code which relied on the names of keyframes rules will no longer match.

    The recommended solutions in this case are to either:

    • change the component's view encapsulation to the None or ShadowDom
    • define keyframes rules in global stylesheets (e.g styles.css)
    • define keyframes rules programmatically in code.
compiler-cli
  • Invalid constructors for DI may now report compilation errors

    When a class inherits its constructor from a base class, the compiler may now report an error when that constructor cannot be used for DI purposes. This may either be because the base class is missing an Angular decorator such as @Injectable() or @Directive(), or because the constructor contains parameters which do not have an associated token (such as primitive types like string). These situations used to behave unexpectedly at runtime, where the class may be constructed without any of its constructor parameters, so this is now reported as an error during compilation.

    Any new errors that may be reported because of this change can be resolved either by decorating the base class from which the constructor is inherited, or by adding an explicit constructor to the class for which the error is reported.

  • Angular compiler option enableIvy has been removed as Ivy is the only rendering engine.

core
  • Angular no longer supports Node.js versions 14.[15-19].x and 16.[10-12].x. Current supported versions of Node.js are 14.20.x, 16.13.x and 18.10.x.
  • TypeScript versions older than 4.8 are no longer supported.
  • Existing iframe usages may have security-sensitive attributes applied as an attribute or property binding in a template or via host bindings in a directive. Such usages would require an update to ensure compliance with the new stricter rules around iframe bindings.
  • Existing iframe usages may have src or srcdoc preceding other attributes. Such usages may need to be updated to ensure compliance with the new stricter rules around iframe bindings.
forms
  • setDisabledState will always be called when a ControlValueAccessor is attached. You can opt-out with FormsModule.withConfig or ReactiveFormsModule.withConfig.
localize
    • canParse method has been removed from all translation parsers in @angular/localize/tools. analyze should be used instead.
    • the hint parameter in theparse methods is now mandatory.
router
  • Previously, the RouterOutlet would immediately instantiate the component being activated during navigation. Now the component is not instantiated until the change detection runs. This could affect tests which do not trigger change detection after a router navigation. In rarer cases, this can affect production code that relies on the exact timing of component availability.
  • The title property is now required on ActivatedRouteSnapshot
  • relativeLinkResolution is no longer configurable in the Router. This option was used as a means to opt out of a bug fix.

Deprecations

common
  • The DATE_PIPE_DEFAULT_TIMEZONE token is now deprecated in favor of the DATE_PIPE_DEFAULT_OPTIONS token, which accepts an object as a value and the timezone can be defined as a field (called timezone) on that object.
core
    • The ability to pass an NgModule to the providedIn option for @Injectable and InjectionToken is now deprecated.

    providedIn: NgModule was intended to be a tree-shakable alternative to NgModule providers. It does not have wide usage, and in most cases is used incorrectly, in circumstances where providedIn: 'root' should be preferred. If providers should truly be scoped to a specific NgModule, use NgModule.providers instead.

    • The ability to set providedIn: 'any' for an @Injectable or InjectionToken is now deprecated.

    providedIn: 'any' is an option with confusing semantics and is almost never used apart from a handful of esoteric cases internal to the framework.

  • The bit field signature of Injector.get() has been deprecated, in favor of the new options object.

  • The bit field signature of TestBed.inject() has been deprecated, in favor of the new options object.

router
  • The RouterLinkWithHref directive is deprecated, use the RouterLink directive instead. The RouterLink contains the code from the RouterLinkWithHref to handle elements with href attributes.
common
Commit Type Description
c0c7efaf7c feat add provideLocationMocks() function to provide Location mocks (#​47674)
75e6297f09 feat add preload tag on server for priority img (#​47343)
4fde292bb5 feat Add automatic srcset generation to ngOptimizedImage (#​47547)
9483343ebf feat Add fill mode to NgOptimizedImage (#​47738)
bdb5371033 feat add injection token for default DatePipe configuration (#​47157)
449d29b701 fix Add fetchpriority to ngOptimizedImage preloads (#​48010)
4f52d4e474 fix don't generate srcset if noopImageLoader is used (#​47804)
3a18398d83 fix Don't warn about image distortion is fill mode is enabled (#​47824)
edea15f2c6 fix export the IMAGE_CONFIG token (#​48051)
8abf1c844c fix fix formatting on oversized image error (#​47188)
ca7bf65933 fix rename rawSrc -> ngSrc in NgOptimizedImage directive (#​47362)
b3879dbf14 fix support density descriptors with 2+ decimals (#​47197)
fa4798095e fix update size error to mention 'fill' mode (#​47797)
23f210c0ab fix warn if using supported CDN but not built-in loader (#​47330)
945432e3fa fix Warn on fill ngOptimizedImage without height (#​48036)
compiler
Commit Type Description
051f75648d fix scope css keyframes in emulated view encapsulation (#​42608)
39b72e208b fix update element schema (#​47552)
48b354a83e fix update element schema (#​47552)
compiler-cli
Commit Type Description
bc54687c7b fix exclude abstract classes from strictInjectionParameters requirement (#​44615)
309b2cde51 fix implement more host directive validations as diagnostics (#​47768)
2e1dddec45 fix support hasInvalidatedResolutions. (#​47585)
19ad4987f9 fix use @​ts-ignore. (#​47636)
8fcadaad48 perf cache source file for reporting type-checking diagnostics (#​47471)
16f96eeabf refactor remove enableIvy options (#​47346)
core
Commit Type Description
e3cef4a784 docs deprecate providedIn: NgModule and providedIn: 'any' (#​47616)
1b9fd46d14 feat add support for Node.js version 18 (#​47730)
ed11a13c3c feat drop support for TypeScript 4.6 and 4.7 (#​47690)
db28badfe6 feat enable the new directive composition API (#​47642)
7de1469be6 feat introduce EnvironmentProviders wrapper type (#​47669)
841c8e5138 feat support object-based DI flags in Injector.get() (#​46761)
120555a626 feat support object-based DI flags in TestBed.inject() (#​46761)
96c0e42e61 fix allow readonly arrays for standalone imports (#​47851)
28f289b825 fix hardening attribute and property binding rules for elements (#​47964)
d4b3c0b47c fix hardening rules related to the attribute order on iframe elements (#​47935)
85330f3fd9 fix update isDevMode to rely on ngDevMode (#​47475)
forms
Commit Type Description
a8569e3802 feat export forms utility functions: isFormArray, isFormGroup… (#​47718)
96b7fe93af fix call setDisabledState on ControlValueAcessor when control is enabled (#​47576)
a99d9d67f3 fix don't mutate validators array (#​47830)
2625dc1312 fix Improve a very commonly viewed error message by adding a guide. (#​47969)
ae29f98c20 fix Runtime error pages must begin with leading zero (#​47991)
http
Commit Type Description
3ba99e286a feat allow for child HttpClients to request via parents (#​47502)
84d0d33c35 feat introduce provideHttpClientTesting provider function (#​47502)
62c7a7a16e feat introduce functional interceptors (#​47502)
e47b129070 feat introduce the provideHttpClient() API (#​47502)
ea16a98dfe fix better handle unexpected undefined XSRF tokens (#​47683)
e7b48da713 fix rename withLegacyInterceptors to withInterceptorsFromDi (#​47901)
language-service
Commit Type Description
bebef5fb43 feat Quick fix to import a component when its selector is used (#​47088)
e7ee53c541 feat support to fix invalid banana in box (#​47393)
localize
Commit Type Description
400a6b5e37 fix add polyfill in polyfills array instead of polyfills.ts (#​47569)
b6fd814542 fix update ng add schematic to support Angular CLI version 15 (#​47763)
d36fd3d9e4 refactor remove deprecated canParse method from TranslationParsers (#​47275)
platform-server
Commit Type Description
2908eba59c fix align server renderer interface with base renderer (#​47868)
router
Commit Type Description
7bee28d037 feat add a migration to remove relativeLinkResolution usages (#​47604)
5163e3d876 feat Add UrlTree constructor to public API (#​47186)
da58801f95 feat auto-unwrap default exports when lazy loading (#​47586)
c3f857975d feat make RouterOutlet name an Input so it can be set dynamically (#​46569)
f73ef21442 feat merge RouterLinkWithHref into RouterLink (#​47630)
16c8f55663 feat migrate RouterLinkWithHref references to RouterLink (#​47599)
07017a7bd3 feat prevent provideRouter() from usage in @​Component (#​47669)
79e9e8ab77 fix Delay router scroll event until navigated components have rendered (#​47563)
6a88bad019 fix Ensure ActivatedRouteSnapshot#title has correct value (#​47481)
7b89d95c0e fix Remove deprecated relativeLinkResolution (#​47623)

Special Thanks

Alan Agius, AleksanderBodurri, Alex Castle, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Charles Lyding, Dylan Hunn, Ferdinand Malcher, George Kalpakas, Jeremy Elbourn, Jessica Janiuk, JiaLiPassion, Joey Perrott, JoostK, Kara Erickson, Kristiyan Kostadinov, Martin Probst, Matthias Weiß, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Sabareesh Kappagantu, WD Snoeijer, angular-robot[bot], arturovt, ced, dario-piotrowicz, ivanwonder and jaybell

v14.3.0

Compare Source

common
Commit Type Description
37bbc61cfe feat Backport NgOptimizedImage to Angular 14.

Special Thanks

Alex Castle, Joey Perrott and Paul Gschwendtner


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this MR and you won't be reminded about these updates again.


  • If you want to rebase/retry this MR, check this box

This MR has been generated by Renovate Bot.

Merge request reports