@angular/router 20.2.0-next.4 → 20.2.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.2.0-next.4
2
+ * @license Angular v20.2.0-next.5
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -81,7 +81,7 @@ function mapToResolve(provider) {
81
81
  /**
82
82
  * @publicApi
83
83
  */
84
- const VERSION = new Version('20.2.0-next.4');
84
+ const VERSION = new Version('20.2.0-next.5');
85
85
 
86
86
  export { VERSION, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve };
87
87
  //# sourceMappingURL=router.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/router/src/utils/functional_guards.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/router/src/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {inject, Type} from '@angular/core';\n\nimport {\n CanActivate,\n CanActivateChild,\n CanActivateChildFn,\n CanActivateFn,\n CanDeactivate,\n CanDeactivateFn,\n CanMatch,\n CanMatchFn,\n Resolve,\n ResolveFn,\n} from '../models';\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanMatch(providers: Array<Type<CanMatch>>): CanMatchFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canMatch(...params),\n );\n}\n\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivate(providers: Array<Type<CanActivate>>): CanActivateFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivate(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivateChild(\n providers: Array<Type<CanActivateChild>>,\n): CanActivateChildFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivateChild(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanDeactivate<T = unknown>(\n providers: Array<Type<CanDeactivate<T>>>,\n): CanDeactivateFn<T>[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canDeactivate(...params),\n );\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToResolve<T>(provider: Type<Resolve<T>>): ResolveFn<T> {\n return (...params) => inject(provider).resolve(...params);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = new Version('20.2.0-next.4');\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAuBA;;;;;;;;AAQG;AACG,SAAU,aAAa,CAAC,SAAgC,EAAA;IAC5D,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CACzC;AACH;AAEA;;;;;;;;AAQG;AACG,SAAU,gBAAgB,CAAC,SAAmC,EAAA;IAClE,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,CAC5C;AACH;AACA;;;;;;;;AAQG;AACG,SAAU,qBAAqB,CACnC,SAAwC,EAAA;IAExC,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,CACjD;AACH;AACA;;;;;;;;AAQG;AACG,SAAU,kBAAkB,CAChC,SAAwC,EAAA;IAExC,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAC9C;AACH;AACA;;;;;;;;AAQG;AACG,SAAU,YAAY,CAAI,QAA0B,EAAA;AACxD,IAAA,OAAO,CAAC,GAAG,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AAC3D;;AC/FA;;;;AAIG;AAIH;;AAEG;MACU,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;;;"}
1
+ {"version":3,"file":"router.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/router/src/utils/functional_guards.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/router/src/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {inject, Type} from '@angular/core';\n\nimport {\n CanActivate,\n CanActivateChild,\n CanActivateChildFn,\n CanActivateFn,\n CanDeactivate,\n CanDeactivateFn,\n CanMatch,\n CanMatchFn,\n Resolve,\n ResolveFn,\n} from '../models';\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanMatch(providers: Array<Type<CanMatch>>): CanMatchFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canMatch(...params),\n );\n}\n\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivate(providers: Array<Type<CanActivate>>): CanActivateFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivate(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivateChild(\n providers: Array<Type<CanActivateChild>>,\n): CanActivateChildFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivateChild(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanDeactivate<T = unknown>(\n providers: Array<Type<CanDeactivate<T>>>,\n): CanDeactivateFn<T>[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canDeactivate(...params),\n );\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToResolve<T>(provider: Type<Resolve<T>>): ResolveFn<T> {\n return (...params) => inject(provider).resolve(...params);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = new Version('20.2.0-next.5');\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAuBA;;;;;;;;AAQG;AACG,SAAU,aAAa,CAAC,SAAgC,EAAA;IAC5D,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CACzC;AACH;AAEA;;;;;;;;AAQG;AACG,SAAU,gBAAgB,CAAC,SAAmC,EAAA;IAClE,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,CAC5C;AACH;AACA;;;;;;;;AAQG;AACG,SAAU,qBAAqB,CACnC,SAAwC,EAAA;IAExC,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,CACjD;AACH;AACA;;;;;;;;AAQG;AACG,SAAU,kBAAkB,CAChC,SAAwC,EAAA;IAExC,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KACP,CAAC,GAAG,MAAM,KACR,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAC9C;AACH;AACA;;;;;;;;AAQG;AACG,SAAU,YAAY,CAAI,QAA0B,EAAA;AACxD,IAAA,OAAO,CAAC,GAAG,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AAC3D;;AC/FA;;;;AAIG;AAIH;;AAEG;MACU,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;;;"}
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license Angular v20.2.0-next.4
2
+ * @license Angular v20.2.0-next.5
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import { DOCUMENT, Location } from '@angular/common';
8
8
  import * as i0 from '@angular/core';
9
- import { ɵisPromise as _isPromise, ɵRuntimeError as _RuntimeError, Injectable, ɵisNgModule as _isNgModule, isStandalone, createEnvironmentInjector, InjectionToken, EventEmitter, input, inject, ViewContainerRef, ChangeDetectorRef, Directive, Input, Output, reflectComponentType, Component, ɵisInjectable as _isInjectable, runInInjectionContext, Compiler, NgModuleFactory, afterNextRender, EnvironmentInjector, DestroyRef, ɵConsole as _Console, ɵPendingTasksInternal as _PendingTasksInternal, ɵINTERNAL_APPLICATION_ERROR_HANDLER as _INTERNAL_APPLICATION_ERROR_HANDLER } from '@angular/core';
9
+ import { ɵisPromise as _isPromise, ɵRuntimeError as _RuntimeError, Injectable, ɵisNgModule as _isNgModule, isStandalone, createEnvironmentInjector, InjectionToken, EventEmitter, input, inject, ViewContainerRef, ChangeDetectorRef, Directive, Input, Output, reflectComponentType, Component, ɵisInjectable as _isInjectable, runInInjectionContext, Compiler, NgModuleFactory, afterNextRender, signal, EnvironmentInjector, DestroyRef, untracked, ɵConsole as _Console, ɵPendingTasksInternal as _PendingTasksInternal, ɵINTERNAL_APPLICATION_ERROR_HANDLER as _INTERNAL_APPLICATION_ERROR_HANDLER } from '@angular/core';
10
10
  import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Observable, Subscription } from 'rxjs';
11
11
  import { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, finalize, refCount, takeUntil } from 'rxjs/operators';
12
12
  import * as i1 from '@angular/platform-browser';
@@ -432,10 +432,10 @@ function mapChildrenIntoArray(segment, fn) {
432
432
  * @publicApi
433
433
  */
434
434
  class UrlSerializer {
435
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
436
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() });
435
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
436
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() });
437
437
  }
438
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: UrlSerializer, decorators: [{
438
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: UrlSerializer, decorators: [{
439
439
  type: Injectable,
440
440
  args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
441
441
  }] });
@@ -2119,10 +2119,10 @@ class ChildrenOutletContexts {
2119
2119
  getContext(childName) {
2120
2120
  return this.contexts.get(childName) || null;
2121
2121
  }
2122
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: ChildrenOutletContexts, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
2123
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' });
2122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: ChildrenOutletContexts, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
2123
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' });
2124
2124
  }
2125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
2125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
2126
2126
  type: Injectable,
2127
2127
  args: [{ providedIn: 'root' }]
2128
2128
  }], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
@@ -2908,10 +2908,10 @@ class RouterOutlet {
2908
2908
  this.inputBinder?.bindActivatedRouteToOutletComponent(this);
2909
2909
  this.activateEvents.emit(this.activated.instance);
2910
2910
  }
2911
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2912
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0-next.4", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, routerOutletData: { classPropertyName: "routerOutletData", publicName: "routerOutletData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 });
2911
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2912
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0-next.5", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, routerOutletData: { classPropertyName: "routerOutletData", publicName: "routerOutletData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 });
2913
2913
  }
2914
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouterOutlet, decorators: [{
2914
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouterOutlet, decorators: [{
2915
2915
  type: Directive,
2916
2916
  args: [{
2917
2917
  selector: 'router-outlet',
@@ -3021,10 +3021,10 @@ class RoutedComponentInputBinder {
3021
3021
  });
3022
3022
  this.outletDataSubscriptions.set(outlet, dataSubscription);
3023
3023
  }
3024
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3025
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RoutedComponentInputBinder });
3024
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3025
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RoutedComponentInputBinder });
3026
3026
  }
3027
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
3027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
3028
3028
  type: Injectable
3029
3029
  }] });
3030
3030
 
@@ -3038,10 +3038,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4",
3038
3038
  * to this `EmptyOutletComponent`.
3039
3039
  */
3040
3040
  class ɵEmptyOutletComponent {
3041
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3042
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0-next.4", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", exportAs: ["emptyRouterOutlet"], ngImport: i0, template: `<router-outlet/>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
3041
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3042
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0-next.5", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", exportAs: ["emptyRouterOutlet"], ngImport: i0, template: `<router-outlet/>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
3043
3043
  }
3044
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
3044
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
3045
3045
  type: Component,
3046
3046
  args: [{
3047
3047
  template: `<router-outlet/>`,
@@ -4402,10 +4402,10 @@ class TitleStrategy {
4402
4402
  getResolvedTitleForRoute(snapshot) {
4403
4403
  return snapshot.data[RouteTitleKey];
4404
4404
  }
4405
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4406
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) });
4405
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4406
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) });
4407
4407
  }
4408
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: TitleStrategy, decorators: [{
4408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: TitleStrategy, decorators: [{
4409
4409
  type: Injectable,
4410
4410
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
4411
4411
  }] });
@@ -4429,10 +4429,10 @@ class DefaultTitleStrategy extends TitleStrategy {
4429
4429
  this.title.setTitle(title);
4430
4430
  }
4431
4431
  }
4432
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
4433
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' });
4432
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
4433
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' });
4434
4434
  }
4435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4436
4436
  type: Injectable,
4437
4437
  args: [{ providedIn: 'root' }]
4438
4438
  }], ctorParameters: () => [{ type: i1.Title }] });
@@ -4508,10 +4508,10 @@ class RouterConfigLoader {
4508
4508
  this.childrenLoaders.set(route, loader);
4509
4509
  return loader;
4510
4510
  }
4511
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4512
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' });
4511
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4512
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' });
4513
4513
  }
4514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouterConfigLoader, decorators: [{
4514
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouterConfigLoader, decorators: [{
4515
4515
  type: Injectable,
4516
4516
  args: [{ providedIn: 'root' }]
4517
4517
  }] });
@@ -4578,10 +4578,10 @@ function maybeUnwrapDefaultExport(input) {
4578
4578
  * @publicApi
4579
4579
  */
4580
4580
  class UrlHandlingStrategy {
4581
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4582
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) });
4581
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4582
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) });
4583
4583
  }
4584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4585
4585
  type: Injectable,
4586
4586
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
4587
4587
  }] });
@@ -4598,10 +4598,10 @@ class DefaultUrlHandlingStrategy {
4598
4598
  merge(newUrlPart, wholeUrl) {
4599
4599
  return newUrlPart;
4600
4600
  }
4601
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4602
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' });
4601
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4602
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' });
4603
4603
  }
4604
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4605
4605
  type: Injectable,
4606
4606
  args: [{ providedIn: 'root' }]
4607
4607
  }] });
@@ -4661,7 +4661,8 @@ function createRenderPromise(injector) {
4661
4661
 
4662
4662
  const NAVIGATION_ERROR_HANDLER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'navigation error handler' : '');
4663
4663
  class NavigationTransitions {
4664
- currentNavigation = null;
4664
+ // Some G3 targets expect the navigation object to be mutated (and not getting a new reference on changes).
4665
+ currentNavigation = signal(null, ...(ngDevMode ? [{ debugName: "currentNavigation", equal: () => false }] : [{ equal: () => false }]));
4665
4666
  currentTransition = null;
4666
4667
  lastSuccessfulNavigation = null;
4667
4668
  /**
@@ -4716,15 +4717,20 @@ class NavigationTransitions {
4716
4717
  }
4717
4718
  handleNavigationRequest(request) {
4718
4719
  const id = ++this.navigationId;
4719
- this.transitions?.next({
4720
- ...request,
4721
- extractedUrl: this.urlHandlingStrategy.extract(request.rawUrl),
4722
- targetSnapshot: null,
4723
- targetRouterState: null,
4724
- guards: { canActivateChecks: [], canDeactivateChecks: [] },
4725
- guardsResult: null,
4726
- abortController: new AbortController(),
4727
- id,
4720
+ // Navigation can happen as a side effect of template execution, as such we need to untrack signal updates
4721
+ // (Writing to signals is not allowed while Angular renders the template)
4722
+ // TODO: We might want to reconsider allowing navigation as side effect of template execution.
4723
+ untracked(() => {
4724
+ this.transitions?.next({
4725
+ ...request,
4726
+ extractedUrl: this.urlHandlingStrategy.extract(request.rawUrl),
4727
+ targetSnapshot: null,
4728
+ targetRouterState: null,
4729
+ guards: { canActivateChecks: [], canDeactivateChecks: [] },
4730
+ guardsResult: null,
4731
+ abortController: new AbortController(),
4732
+ id,
4733
+ });
4728
4734
  });
4729
4735
  }
4730
4736
  setupNavigations(router) {
@@ -4747,7 +4753,7 @@ class NavigationTransitions {
4747
4753
  }
4748
4754
  this.currentTransition = overallTransitionState;
4749
4755
  // Store the Navigation object
4750
- this.currentNavigation = {
4756
+ this.currentNavigation.set({
4751
4757
  id: t.id,
4752
4758
  initialUrl: t.rawUrl,
4753
4759
  extractedUrl: t.extractedUrl,
@@ -4763,7 +4769,7 @@ class NavigationTransitions {
4763
4769
  previousNavigation: null,
4764
4770
  },
4765
4771
  abort: () => t.abortController.abort(),
4766
- };
4772
+ });
4767
4773
  const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();
4768
4774
  const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;
4769
4775
  if (!urlTransition && onSameUrlNavigation !== 'reload') {
@@ -4792,10 +4798,10 @@ class NavigationTransitions {
4792
4798
  tap((t) => {
4793
4799
  overallTransitionState.targetSnapshot = t.targetSnapshot;
4794
4800
  overallTransitionState.urlAfterRedirects = t.urlAfterRedirects;
4795
- this.currentNavigation = {
4796
- ...this.currentNavigation,
4797
- finalUrl: t.urlAfterRedirects,
4798
- };
4801
+ this.currentNavigation.update((nav) => {
4802
+ nav.finalUrl = t.urlAfterRedirects;
4803
+ return nav;
4804
+ });
4799
4805
  // Fire RoutesRecognized
4800
4806
  const routesRecognized = new RoutesRecognized(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);
4801
4807
  this.events.next(routesRecognized);
@@ -4816,7 +4822,10 @@ class NavigationTransitions {
4816
4822
  urlAfterRedirects: extractedUrl,
4817
4823
  extras: { ...extras, skipLocationChange: false, replaceUrl: false },
4818
4824
  };
4819
- this.currentNavigation.finalUrl = extractedUrl;
4825
+ this.currentNavigation.update((nav) => {
4826
+ nav.finalUrl = extractedUrl;
4827
+ return nav;
4828
+ });
4820
4829
  return of(overallTransitionState);
4821
4830
  }
4822
4831
  else {
@@ -4910,7 +4919,10 @@ class NavigationTransitions {
4910
4919
  }), map((t) => {
4911
4920
  const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState);
4912
4921
  this.currentTransition = overallTransitionState = { ...t, targetRouterState };
4913
- this.currentNavigation.targetRouterState = targetRouterState;
4922
+ this.currentNavigation.update((nav) => {
4923
+ nav.targetRouterState = targetRouterState;
4924
+ return nav;
4925
+ });
4914
4926
  return overallTransitionState;
4915
4927
  }), tap(() => {
4916
4928
  this.events.next(new BeforeActivateRoutes());
@@ -4930,7 +4942,7 @@ class NavigationTransitions {
4930
4942
  }))), tap({
4931
4943
  next: (t) => {
4932
4944
  completedOrAborted = true;
4933
- this.lastSuccessfulNavigation = this.currentNavigation;
4945
+ this.lastSuccessfulNavigation = untracked(this.currentNavigation);
4934
4946
  this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects)));
4935
4947
  this.titleStrategy?.updateTitle(t.targetRouterState.snapshot);
4936
4948
  t.resolve(true);
@@ -4964,7 +4976,7 @@ class NavigationTransitions {
4964
4976
  // Only clear current navigation if it is still set to the one that
4965
4977
  // finalized.
4966
4978
  if (this.currentTransition?.id === overallTransitionState.id) {
4967
- this.currentNavigation = null;
4979
+ this.currentNavigation.set(null);
4968
4980
  this.currentTransition = null;
4969
4981
  }
4970
4982
  }), catchError((e) => {
@@ -5057,14 +5069,15 @@ class NavigationTransitions {
5057
5069
  // return only part of the browser URL and that part may have not changed even if some other
5058
5070
  // portion of the URL did.
5059
5071
  const currentBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true)));
5060
- const targetBrowserUrl = this.currentNavigation?.targetBrowserUrl ?? this.currentNavigation?.extractedUrl;
5072
+ const currentNavigation = untracked(this.currentNavigation);
5073
+ const targetBrowserUrl = currentNavigation?.targetBrowserUrl ?? currentNavigation?.extractedUrl;
5061
5074
  return (currentBrowserUrl.toString() !== targetBrowserUrl?.toString() &&
5062
- !this.currentNavigation?.extras.skipLocationChange);
5075
+ !currentNavigation?.extras.skipLocationChange);
5063
5076
  }
5064
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5065
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: NavigationTransitions, providedIn: 'root' });
5077
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5078
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: NavigationTransitions, providedIn: 'root' });
5066
5079
  }
5067
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: NavigationTransitions, decorators: [{
5080
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: NavigationTransitions, decorators: [{
5068
5081
  type: Injectable,
5069
5082
  args: [{ providedIn: 'root' }]
5070
5083
  }], ctorParameters: () => [] });
@@ -5080,10 +5093,10 @@ function isBrowserTriggeredNavigation(source) {
5080
5093
  * @publicApi
5081
5094
  */
5082
5095
  class RouteReuseStrategy {
5083
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5084
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) });
5096
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5097
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) });
5085
5098
  }
5086
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: RouteReuseStrategy, decorators: [{
5099
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: RouteReuseStrategy, decorators: [{
5087
5100
  type: Injectable,
5088
5101
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
5089
5102
  }] });
@@ -5134,10 +5147,10 @@ class BaseRouteReuseStrategy {
5134
5147
  }
5135
5148
  }
5136
5149
  class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
5137
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
5138
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' });
5150
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
5151
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' });
5139
5152
  }
5140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
5153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
5141
5154
  type: Injectable,
5142
5155
  args: [{ providedIn: 'root' }]
5143
5156
  }] });
@@ -5236,10 +5249,10 @@ class StateManager {
5236
5249
  // when merging, such as the query params so they are not lost on a refresh.
5237
5250
  this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, finalUrl ?? this.rawUrlTree);
5238
5251
  }
5239
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5240
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) });
5252
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5253
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) });
5241
5254
  }
5242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: StateManager, decorators: [{
5255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: StateManager, decorators: [{
5243
5256
  type: Injectable,
5244
5257
  args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
5245
5258
  }] });
@@ -5371,10 +5384,10 @@ class HistoryStateManager extends StateManager {
5371
5384
  }
5372
5385
  return { navigationId };
5373
5386
  }
5374
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
5375
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: HistoryStateManager, providedIn: 'root' });
5387
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
5388
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: HistoryStateManager, providedIn: 'root' });
5376
5389
  }
5377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: HistoryStateManager, decorators: [{
5390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: HistoryStateManager, decorators: [{
5378
5391
  type: Injectable,
5379
5392
  args: [{ providedIn: 'root' }]
5380
5393
  }] });
@@ -5513,6 +5526,12 @@ class Router {
5513
5526
  * `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.
5514
5527
  */
5515
5528
  componentInputBindingEnabled = !!inject(INPUT_BINDER, { optional: true });
5529
+ /**
5530
+ * Signal of the current `Navigation` object when the router is navigating, and `null` when idle.
5531
+ *
5532
+ * Note: The current navigation becomes to null after the NavigationEnd event is emitted.
5533
+ */
5534
+ currentNavigation = this.navigationTransitions.currentNavigation.asReadonly();
5516
5535
  constructor() {
5517
5536
  this.resetConfig(this.config);
5518
5537
  this.navigationTransitions.setupNavigations(this).subscribe({
@@ -5527,7 +5546,7 @@ class Router {
5527
5546
  const subscription = this.navigationTransitions.events.subscribe((e) => {
5528
5547
  try {
5529
5548
  const currentTransition = this.navigationTransitions.currentTransition;
5530
- const currentNavigation = this.navigationTransitions.currentNavigation;
5549
+ const currentNavigation = untracked(this.navigationTransitions.currentNavigation);
5531
5550
  if (currentTransition !== null && currentNavigation !== null) {
5532
5551
  this.stateManager.handleRouterEvent(e, currentNavigation);
5533
5552
  if (e instanceof NavigationCancel &&
@@ -5650,9 +5669,11 @@ class Router {
5650
5669
  /**
5651
5670
  * Returns the current `Navigation` object when the router is navigating,
5652
5671
  * and `null` when idle.
5672
+ *
5673
+ * @deprecated 20.2 Use the `currentNavigation` signal instead.
5653
5674
  */
5654
5675
  getCurrentNavigation() {
5655
- return this.navigationTransitions.currentNavigation;
5676
+ return untracked(this.navigationTransitions.currentNavigation);
5656
5677
  }
5657
5678
  /**
5658
5679
  * The `Navigation` object of the most recent navigation to succeed and `null` if there
@@ -5939,10 +5960,10 @@ class Router {
5939
5960
  return Promise.reject(e);
5940
5961
  });
5941
5962
  }
5942
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5943
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: Router, providedIn: 'root' });
5963
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5964
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: Router, providedIn: 'root' });
5944
5965
  }
5945
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.4", ngImport: i0, type: Router, decorators: [{
5966
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.5", ngImport: i0, type: Router, decorators: [{
5946
5967
  type: Injectable,
5947
5968
  args: [{ providedIn: 'root' }]
5948
5969
  }], ctorParameters: () => [] });