@angular/router 21.0.0-next.6 → 21.0.0-next.8
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.
- package/fesm2022/_router-chunk.mjs +150 -132
- package/fesm2022/_router-chunk.mjs.map +1 -1
- package/fesm2022/_router_module-chunk.mjs +28 -27
- package/fesm2022/_router_module-chunk.mjs.map +1 -1
- package/fesm2022/router.mjs +3 -3
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/testing.mjs +12 -12
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +2 -2
- package/fesm2022/upgrade.mjs.map +1 -1
- package/package.json +4 -4
- package/types/_router_module-chunk.d.ts +3 -2
- package/types/router.d.ts +6 -6
- package/types/testing.d.ts +2 -2
- package/types/upgrade.d.ts +2 -2
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.0.0-next.
|
|
3
|
-
* (c) 2010-2025 Google LLC. https://angular.
|
|
2
|
+
* @license Angular v21.0.0-next.8
|
|
3
|
+
* (c) 2010-2025 Google LLC. https://angular.dev/
|
|
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
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, makeEnvironmentProviders, Compiler, NgModuleFactory, ɵresolveComponentResources as _resolveComponentResources, afterNextRender, signal, EnvironmentInjector, DestroyRef, untracked, ɵConsole as _Console, ɵPendingTasksInternal as _PendingTasksInternal, ɵINTERNAL_APPLICATION_ERROR_HANDLER as _INTERNAL_APPLICATION_ERROR_HANDLER } from '@angular/core';
|
|
10
|
-
import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, Observable, concat, defer, pipe, throwError, EMPTY,
|
|
11
|
-
import { map, switchMap, take, startWith, filter, takeUntil, mergeMap,
|
|
10
|
+
import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, Observable, concat, defer, pipe, throwError, EMPTY, Subject, Subscription } from 'rxjs';
|
|
11
|
+
import { first, map, switchMap, take, startWith, filter, takeUntil, mergeMap, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, finalize } from 'rxjs/operators';
|
|
12
12
|
import * as i1 from '@angular/platform-browser';
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -102,6 +102,16 @@ function defaultUrlMatcher(segments, segmentGroup, route) {
|
|
|
102
102
|
return { consumed: segments.slice(0, parts.length), posParams };
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
/** replacement for firstValueFrom in rxjs 7. We must support rxjs v6 so we cannot use it */
|
|
106
|
+
function firstValueFrom(source) {
|
|
107
|
+
return new Promise((resolve, reject) => {
|
|
108
|
+
source.pipe(first()).subscribe({
|
|
109
|
+
next: (value) => resolve(value),
|
|
110
|
+
error: (err) => reject(err),
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
105
115
|
function shallowEqualArrays(a, b) {
|
|
106
116
|
if (a.length !== b.length)
|
|
107
117
|
return false;
|
|
@@ -167,6 +177,12 @@ function wrapIntoObservable(value) {
|
|
|
167
177
|
}
|
|
168
178
|
return of(value);
|
|
169
179
|
}
|
|
180
|
+
function wrapIntoPromise(value) {
|
|
181
|
+
if (isObservable(value)) {
|
|
182
|
+
return firstValueFrom(value);
|
|
183
|
+
}
|
|
184
|
+
return Promise.resolve(value);
|
|
185
|
+
}
|
|
170
186
|
|
|
171
187
|
const pathCompareMap = {
|
|
172
188
|
'exact': equalSegmentGroups,
|
|
@@ -432,10 +448,10 @@ function mapChildrenIntoArray(segment, fn) {
|
|
|
432
448
|
* @publicApi
|
|
433
449
|
*/
|
|
434
450
|
class UrlSerializer {
|
|
435
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
436
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
451
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
452
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() });
|
|
437
453
|
}
|
|
438
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: UrlSerializer, decorators: [{
|
|
439
455
|
type: Injectable,
|
|
440
456
|
args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
|
|
441
457
|
}] });
|
|
@@ -2119,10 +2135,10 @@ class ChildrenOutletContexts {
|
|
|
2119
2135
|
getContext(childName) {
|
|
2120
2136
|
return this.contexts.get(childName) || null;
|
|
2121
2137
|
}
|
|
2122
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
2123
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
2138
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: ChildrenOutletContexts, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2139
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' });
|
|
2124
2140
|
}
|
|
2125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
2141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
|
|
2126
2142
|
type: Injectable,
|
|
2127
2143
|
args: [{ providedIn: 'root' }]
|
|
2128
2144
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
@@ -2692,6 +2708,7 @@ function hasStaticTitle(config) {
|
|
|
2692
2708
|
* ```
|
|
2693
2709
|
*
|
|
2694
2710
|
* @publicApi
|
|
2711
|
+
* @see [Page routerOutletData](guide/routing/show-routes-with-outlets#passing-contextual-data-to-routed-components)
|
|
2695
2712
|
*/
|
|
2696
2713
|
const ROUTER_OUTLET_DATA = new InjectionToken(typeof ngDevMode !== undefined && ngDevMode ? 'RouterOutlet data' : '');
|
|
2697
2714
|
/**
|
|
@@ -2908,10 +2925,10 @@ class RouterOutlet {
|
|
|
2908
2925
|
this.inputBinder?.bindActivatedRouteToOutletComponent(this);
|
|
2909
2926
|
this.activateEvents.emit(this.activated.instance);
|
|
2910
2927
|
}
|
|
2911
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
2912
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.0-next.
|
|
2928
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2929
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.0-next.8", 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
2930
|
}
|
|
2914
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
2931
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouterOutlet, decorators: [{
|
|
2915
2932
|
type: Directive,
|
|
2916
2933
|
args: [{
|
|
2917
2934
|
selector: 'router-outlet',
|
|
@@ -2931,7 +2948,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.6",
|
|
|
2931
2948
|
}], detachEvents: [{
|
|
2932
2949
|
type: Output,
|
|
2933
2950
|
args: ['detach']
|
|
2934
|
-
}] } });
|
|
2951
|
+
}], routerOutletData: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerOutletData", required: false }] }] } });
|
|
2935
2952
|
class OutletInjector {
|
|
2936
2953
|
route;
|
|
2937
2954
|
childContexts;
|
|
@@ -3021,10 +3038,10 @@ class RoutedComponentInputBinder {
|
|
|
3021
3038
|
});
|
|
3022
3039
|
this.outletDataSubscriptions.set(outlet, dataSubscription);
|
|
3023
3040
|
}
|
|
3024
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
3025
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
3041
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3042
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RoutedComponentInputBinder });
|
|
3026
3043
|
}
|
|
3027
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
3044
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
|
|
3028
3045
|
type: Injectable
|
|
3029
3046
|
}] });
|
|
3030
3047
|
|
|
@@ -3038,10 +3055,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.6",
|
|
|
3038
3055
|
* to this `EmptyOutletComponent`.
|
|
3039
3056
|
*/
|
|
3040
3057
|
class ɵEmptyOutletComponent {
|
|
3041
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
3042
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.0-next.
|
|
3058
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3059
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.0-next.8", 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
3060
|
}
|
|
3044
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
3061
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
|
|
3045
3062
|
type: Component,
|
|
3046
3063
|
args: [{
|
|
3047
3064
|
template: `<router-outlet/>`,
|
|
@@ -3733,16 +3750,6 @@ function runCanMatchGuards(injector, route, segments, urlSerializer, abortSignal
|
|
|
3733
3750
|
return of(canMatchObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));
|
|
3734
3751
|
}
|
|
3735
3752
|
|
|
3736
|
-
/** replacement for firstValueFrom in rxjs 7. We must support rxjs v6 so we cannot use it */
|
|
3737
|
-
function firstValueFrom(source) {
|
|
3738
|
-
return new Promise((resolve, reject) => {
|
|
3739
|
-
source.pipe(first()).subscribe({
|
|
3740
|
-
next: (value) => resolve(value),
|
|
3741
|
-
error: (err) => reject(err),
|
|
3742
|
-
});
|
|
3743
|
-
});
|
|
3744
|
-
}
|
|
3745
|
-
|
|
3746
3753
|
let NoMatch$1 = class NoMatch extends Error {
|
|
3747
3754
|
segmentGroup;
|
|
3748
3755
|
constructor(segmentGroup) {
|
|
@@ -4225,10 +4232,7 @@ let Recognizer$1 = class Recognizer {
|
|
|
4225
4232
|
}
|
|
4226
4233
|
const shouldLoadResult = await firstValueFrom(runCanLoadGuards(injector, route, segments, this.urlSerializer, this.abortSignal));
|
|
4227
4234
|
if (shouldLoadResult) {
|
|
4228
|
-
const cfg = await
|
|
4229
|
-
if (!cfg) {
|
|
4230
|
-
throw canLoadFails$1(route);
|
|
4231
|
-
}
|
|
4235
|
+
const cfg = await this.configLoader.loadChildren(injector, route);
|
|
4232
4236
|
route._loadedRoutes = cfg.routes;
|
|
4233
4237
|
route._loadedInjector = cfg.injector;
|
|
4234
4238
|
return cfg;
|
|
@@ -4666,7 +4670,7 @@ class Recognizer {
|
|
|
4666
4670
|
}
|
|
4667
4671
|
return runCanLoadGuards(injector, route, segments, this.urlSerializer).pipe(mergeMap((shouldLoadResult) => {
|
|
4668
4672
|
if (shouldLoadResult) {
|
|
4669
|
-
return this.configLoader.loadChildren(injector, route).pipe(tap((cfg) => {
|
|
4673
|
+
return from(this.configLoader.loadChildren(injector, route)).pipe(tap((cfg) => {
|
|
4670
4674
|
route._loadedRoutes = cfg.routes;
|
|
4671
4675
|
route._loadedInjector = cfg.injector;
|
|
4672
4676
|
}));
|
|
@@ -4876,7 +4880,7 @@ function switchTap(next) {
|
|
|
4876
4880
|
* incorporate titles in named outlets.
|
|
4877
4881
|
*
|
|
4878
4882
|
* @publicApi
|
|
4879
|
-
* @see [Page title guide](guide/routing/
|
|
4883
|
+
* @see [Page title guide](guide/routing/define-routes#using-titlestrategy-for-page-titles)
|
|
4880
4884
|
*/
|
|
4881
4885
|
class TitleStrategy {
|
|
4882
4886
|
/**
|
|
@@ -4898,10 +4902,10 @@ class TitleStrategy {
|
|
|
4898
4902
|
getResolvedTitleForRoute(snapshot) {
|
|
4899
4903
|
return snapshot.data[RouteTitleKey];
|
|
4900
4904
|
}
|
|
4901
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
4902
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
4905
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4906
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) });
|
|
4903
4907
|
}
|
|
4904
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
4908
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: TitleStrategy, decorators: [{
|
|
4905
4909
|
type: Injectable,
|
|
4906
4910
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
|
|
4907
4911
|
}] });
|
|
@@ -4925,10 +4929,10 @@ class DefaultTitleStrategy extends TitleStrategy {
|
|
|
4925
4929
|
this.title.setTitle(title);
|
|
4926
4930
|
}
|
|
4927
4931
|
}
|
|
4928
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
4929
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
4932
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4933
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' });
|
|
4930
4934
|
}
|
|
4931
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
4935
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
|
|
4932
4936
|
type: Injectable,
|
|
4933
4937
|
args: [{ providedIn: 'root' }]
|
|
4934
4938
|
}], ctorParameters: () => [{ type: i1.Title }] });
|
|
@@ -4960,28 +4964,32 @@ class RouterConfigLoader {
|
|
|
4960
4964
|
onLoadStartListener;
|
|
4961
4965
|
onLoadEndListener;
|
|
4962
4966
|
compiler = inject(Compiler);
|
|
4963
|
-
loadComponent(injector, route) {
|
|
4967
|
+
async loadComponent(injector, route) {
|
|
4964
4968
|
if (this.componentLoaders.get(route)) {
|
|
4965
4969
|
return this.componentLoaders.get(route);
|
|
4966
4970
|
}
|
|
4967
4971
|
else if (route._loadedComponent) {
|
|
4968
|
-
return
|
|
4972
|
+
return Promise.resolve(route._loadedComponent);
|
|
4969
4973
|
}
|
|
4970
4974
|
if (this.onLoadStartListener) {
|
|
4971
4975
|
this.onLoadStartListener(route);
|
|
4972
4976
|
}
|
|
4973
|
-
const
|
|
4974
|
-
|
|
4975
|
-
|
|
4977
|
+
const loader = (async () => {
|
|
4978
|
+
try {
|
|
4979
|
+
const loaded = await wrapIntoPromise(runInInjectionContext(injector, () => route.loadComponent()));
|
|
4980
|
+
const component = await maybeResolveResources(maybeUnwrapDefaultExport(loaded));
|
|
4981
|
+
if (this.onLoadEndListener) {
|
|
4982
|
+
this.onLoadEndListener(route);
|
|
4983
|
+
}
|
|
4984
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
4985
|
+
assertStandalone(route.path ?? '', component);
|
|
4986
|
+
route._loadedComponent = component;
|
|
4987
|
+
return component;
|
|
4976
4988
|
}
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
})
|
|
4981
|
-
this.componentLoaders.delete(route);
|
|
4982
|
-
}));
|
|
4983
|
-
// Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much
|
|
4984
|
-
const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());
|
|
4989
|
+
finally {
|
|
4990
|
+
this.componentLoaders.delete(route);
|
|
4991
|
+
}
|
|
4992
|
+
})();
|
|
4985
4993
|
this.componentLoaders.set(route, loader);
|
|
4986
4994
|
return loader;
|
|
4987
4995
|
}
|
|
@@ -4990,24 +4998,29 @@ class RouterConfigLoader {
|
|
|
4990
4998
|
return this.childrenLoaders.get(route);
|
|
4991
4999
|
}
|
|
4992
5000
|
else if (route._loadedRoutes) {
|
|
4993
|
-
return
|
|
5001
|
+
return Promise.resolve({ routes: route._loadedRoutes, injector: route._loadedInjector });
|
|
4994
5002
|
}
|
|
4995
5003
|
if (this.onLoadStartListener) {
|
|
4996
5004
|
this.onLoadStartListener(route);
|
|
4997
5005
|
}
|
|
4998
|
-
const
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5006
|
+
const loader = (async () => {
|
|
5007
|
+
try {
|
|
5008
|
+
const result = await loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener);
|
|
5009
|
+
route._loadedRoutes = result.routes;
|
|
5010
|
+
route._loadedInjector = result.injector;
|
|
5011
|
+
return result;
|
|
5012
|
+
}
|
|
5013
|
+
finally {
|
|
5014
|
+
this.childrenLoaders.delete(route);
|
|
5015
|
+
}
|
|
5016
|
+
})();
|
|
5004
5017
|
this.childrenLoaders.set(route, loader);
|
|
5005
5018
|
return loader;
|
|
5006
5019
|
}
|
|
5007
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5008
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5020
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5021
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' });
|
|
5009
5022
|
}
|
|
5010
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5023
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouterConfigLoader, decorators: [{
|
|
5011
5024
|
type: Injectable,
|
|
5012
5025
|
args: [{ providedIn: 'root' }]
|
|
5013
5026
|
}] });
|
|
@@ -5019,40 +5032,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.6",
|
|
|
5019
5032
|
* in @angular-devkit/build-angular. If there are any updates to the contract here, it will require
|
|
5020
5033
|
* an update to the extractor.
|
|
5021
5034
|
*/
|
|
5022
|
-
function loadChildren(route, compiler, parentInjector, onLoadEndListener) {
|
|
5023
|
-
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5050
|
-
}
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5055
|
-
}
|
|
5035
|
+
async function loadChildren(route, compiler, parentInjector, onLoadEndListener) {
|
|
5036
|
+
const loaded = await wrapIntoPromise(runInInjectionContext(parentInjector, () => route.loadChildren()));
|
|
5037
|
+
const t = await maybeResolveResources(maybeUnwrapDefaultExport(loaded));
|
|
5038
|
+
let factoryOrRoutes;
|
|
5039
|
+
if (t instanceof NgModuleFactory || Array.isArray(t)) {
|
|
5040
|
+
factoryOrRoutes = t;
|
|
5041
|
+
}
|
|
5042
|
+
else {
|
|
5043
|
+
factoryOrRoutes = await compiler.compileModuleAsync(t);
|
|
5044
|
+
}
|
|
5045
|
+
if (onLoadEndListener) {
|
|
5046
|
+
onLoadEndListener(route);
|
|
5047
|
+
}
|
|
5048
|
+
// This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is
|
|
5049
|
+
// no injector associated with lazy loading a `Route` array.
|
|
5050
|
+
let injector;
|
|
5051
|
+
let rawRoutes;
|
|
5052
|
+
let requireStandaloneComponents = false;
|
|
5053
|
+
if (Array.isArray(factoryOrRoutes)) {
|
|
5054
|
+
rawRoutes = factoryOrRoutes;
|
|
5055
|
+
requireStandaloneComponents = true;
|
|
5056
|
+
}
|
|
5057
|
+
else {
|
|
5058
|
+
injector = factoryOrRoutes.create(parentInjector).injector;
|
|
5059
|
+
// When loading a module that doesn't provide `RouterModule.forChild()` preloader
|
|
5060
|
+
// will get stuck in an infinite loop. The child module's Injector will look to
|
|
5061
|
+
// its parent `Injector` when it doesn't find any ROUTES so it will return routes
|
|
5062
|
+
// for it's parent module instead.
|
|
5063
|
+
rawRoutes = injector.get(ROUTES, [], { optional: true, self: true }).flat();
|
|
5064
|
+
}
|
|
5065
|
+
const routes = rawRoutes.map(standardizeConfig);
|
|
5066
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
5067
|
+
validateConfig(routes, route.path, requireStandaloneComponents);
|
|
5068
|
+
return { routes, injector };
|
|
5056
5069
|
}
|
|
5057
5070
|
function isWrappedDefaultExport(value) {
|
|
5058
5071
|
// We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be
|
|
@@ -5067,7 +5080,7 @@ function maybeUnwrapDefaultExport(input) {
|
|
|
5067
5080
|
}
|
|
5068
5081
|
function maybeResolveResources(value) {
|
|
5069
5082
|
// In JIT mode we usually resolve the resources of components on bootstrap, however
|
|
5070
|
-
// that won't have happened for lazy-loaded
|
|
5083
|
+
// that won't have happened for lazy-loaded. Attempt to load any pending
|
|
5071
5084
|
// resources again here.
|
|
5072
5085
|
if ((typeof ngJitMode === 'undefined' || ngJitMode) && typeof fetch === 'function') {
|
|
5073
5086
|
return _resolveComponentResources(fetch)
|
|
@@ -5077,7 +5090,7 @@ function maybeResolveResources(value) {
|
|
|
5077
5090
|
})
|
|
5078
5091
|
.then(() => value);
|
|
5079
5092
|
}
|
|
5080
|
-
return
|
|
5093
|
+
return Promise.resolve(value);
|
|
5081
5094
|
}
|
|
5082
5095
|
|
|
5083
5096
|
/**
|
|
@@ -5088,10 +5101,10 @@ function maybeResolveResources(value) {
|
|
|
5088
5101
|
* @publicApi
|
|
5089
5102
|
*/
|
|
5090
5103
|
class UrlHandlingStrategy {
|
|
5091
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5092
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5104
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5105
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) });
|
|
5093
5106
|
}
|
|
5094
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
|
|
5095
5108
|
type: Injectable,
|
|
5096
5109
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
|
|
5097
5110
|
}] });
|
|
@@ -5108,10 +5121,10 @@ class DefaultUrlHandlingStrategy {
|
|
|
5108
5121
|
merge(newUrlPart, wholeUrl) {
|
|
5109
5122
|
return newUrlPart;
|
|
5110
5123
|
}
|
|
5111
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5112
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5125
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' });
|
|
5113
5126
|
}
|
|
5114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
|
|
5115
5128
|
type: Injectable,
|
|
5116
5129
|
args: [{ providedIn: 'root' }]
|
|
5117
5130
|
}] });
|
|
@@ -5169,6 +5182,7 @@ function createRenderPromise(injector) {
|
|
|
5169
5182
|
});
|
|
5170
5183
|
}
|
|
5171
5184
|
|
|
5185
|
+
const noop = () => { };
|
|
5172
5186
|
const NAVIGATION_ERROR_HANDLER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'navigation error handler' : '');
|
|
5173
5187
|
class NavigationTransitions {
|
|
5174
5188
|
// Some G3 targets expect the navigation object to be mutated (and not getting a new reference on changes).
|
|
@@ -5238,7 +5252,6 @@ class NavigationTransitions {
|
|
|
5238
5252
|
targetRouterState: null,
|
|
5239
5253
|
guards: { canActivateChecks: [], canDeactivateChecks: [] },
|
|
5240
5254
|
guardsResult: null,
|
|
5241
|
-
abortController: new AbortController(),
|
|
5242
5255
|
id,
|
|
5243
5256
|
});
|
|
5244
5257
|
});
|
|
@@ -5249,6 +5262,7 @@ class NavigationTransitions {
|
|
|
5249
5262
|
// Using switchMap so we cancel executing navigations when a new one comes in
|
|
5250
5263
|
switchMap((overallTransitionState) => {
|
|
5251
5264
|
let completedOrAborted = false;
|
|
5265
|
+
const abortController = new AbortController();
|
|
5252
5266
|
return of(overallTransitionState).pipe(switchMap((t) => {
|
|
5253
5267
|
// It is possible that `switchMap` fails to cancel previous navigations if a new one happens synchronously while the operator
|
|
5254
5268
|
// is processing the `next` notification of that previous navigation. This can happen when a new navigation (say 2) cancels a
|
|
@@ -5279,7 +5293,7 @@ class NavigationTransitions {
|
|
|
5279
5293
|
...lastSuccessfulNavigation,
|
|
5280
5294
|
previousNavigation: null,
|
|
5281
5295
|
},
|
|
5282
|
-
abort: () =>
|
|
5296
|
+
abort: () => abortController.abort(),
|
|
5283
5297
|
});
|
|
5284
5298
|
const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();
|
|
5285
5299
|
const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;
|
|
@@ -5304,7 +5318,7 @@ class NavigationTransitions {
|
|
|
5304
5318
|
return Promise.resolve(t);
|
|
5305
5319
|
}),
|
|
5306
5320
|
// Recognize
|
|
5307
|
-
recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy,
|
|
5321
|
+
recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy, abortController.signal),
|
|
5308
5322
|
// Update URL if in `eager` update mode
|
|
5309
5323
|
tap((t) => {
|
|
5310
5324
|
overallTransitionState.targetSnapshot = t.targetSnapshot;
|
|
@@ -5409,7 +5423,7 @@ class NavigationTransitions {
|
|
|
5409
5423
|
const loaders = [];
|
|
5410
5424
|
if (route.routeConfig?.loadComponent) {
|
|
5411
5425
|
const injector = getClosestRouteInjector(route) ?? this.environmentInjector;
|
|
5412
|
-
loaders.push(this.configLoader.loadComponent(injector, route.routeConfig).pipe(tap((loadedComponent) => {
|
|
5426
|
+
loaders.push(from(this.configLoader.loadComponent(injector, route.routeConfig)).pipe(tap((loadedComponent) => {
|
|
5413
5427
|
route.component = loadedComponent;
|
|
5414
5428
|
}), map(() => void 0)));
|
|
5415
5429
|
}
|
|
@@ -5441,13 +5455,17 @@ class NavigationTransitions {
|
|
|
5441
5455
|
// Ensure that if some observable used to drive the transition doesn't
|
|
5442
5456
|
// complete, the navigation still finalizes This should never happen, but
|
|
5443
5457
|
// this is done as a safety measure to avoid surfacing this error (#49567).
|
|
5444
|
-
take(1), takeUntil(abortSignalToObservable(
|
|
5458
|
+
take(1), takeUntil(abortSignalToObservable(abortController.signal).pipe(
|
|
5445
5459
|
// Ignore aborts if we are already completed, canceled, or are in the activation stage (we have targetRouterState)
|
|
5446
5460
|
filter(() => !completedOrAborted && !overallTransitionState.targetRouterState), tap(() => {
|
|
5447
|
-
this.cancelNavigationTransition(overallTransitionState,
|
|
5461
|
+
this.cancelNavigationTransition(overallTransitionState, abortController.signal.reason + '', NavigationCancellationCode.Aborted);
|
|
5448
5462
|
}))), tap({
|
|
5449
5463
|
next: (t) => {
|
|
5450
5464
|
completedOrAborted = true;
|
|
5465
|
+
this.currentNavigation.update((nav) => {
|
|
5466
|
+
nav.abort = noop;
|
|
5467
|
+
return nav;
|
|
5468
|
+
});
|
|
5451
5469
|
this.lastSuccessfulNavigation.set(untracked(this.currentNavigation));
|
|
5452
5470
|
this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects)));
|
|
5453
5471
|
this.titleStrategy?.updateTitle(t.targetRouterState.snapshot);
|
|
@@ -5467,7 +5485,7 @@ class NavigationTransitions {
|
|
|
5467
5485
|
takeUntil(this.transitionAbortWithErrorSubject.pipe(tap((err) => {
|
|
5468
5486
|
throw err;
|
|
5469
5487
|
}))), finalize(() => {
|
|
5470
|
-
|
|
5488
|
+
abortController.abort();
|
|
5471
5489
|
/* When the navigation stream finishes either through error or success,
|
|
5472
5490
|
* we set the `completed` or `errored` flag. However, there are some
|
|
5473
5491
|
* situations where we could get here without either of those being set.
|
|
@@ -5581,10 +5599,10 @@ class NavigationTransitions {
|
|
|
5581
5599
|
return (currentBrowserUrl.toString() !== targetBrowserUrl?.toString() &&
|
|
5582
5600
|
!currentNavigation?.extras.skipLocationChange);
|
|
5583
5601
|
}
|
|
5584
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5585
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5602
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5603
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: NavigationTransitions, providedIn: 'root' });
|
|
5586
5604
|
}
|
|
5587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5605
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: NavigationTransitions, decorators: [{
|
|
5588
5606
|
type: Injectable,
|
|
5589
5607
|
args: [{ providedIn: 'root' }]
|
|
5590
5608
|
}], ctorParameters: () => [] });
|
|
@@ -5600,10 +5618,10 @@ function isBrowserTriggeredNavigation(source) {
|
|
|
5600
5618
|
* @publicApi
|
|
5601
5619
|
*/
|
|
5602
5620
|
class RouteReuseStrategy {
|
|
5603
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5604
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5621
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5622
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) });
|
|
5605
5623
|
}
|
|
5606
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5624
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: RouteReuseStrategy, decorators: [{
|
|
5607
5625
|
type: Injectable,
|
|
5608
5626
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
|
|
5609
5627
|
}] });
|
|
@@ -5654,10 +5672,10 @@ class BaseRouteReuseStrategy {
|
|
|
5654
5672
|
}
|
|
5655
5673
|
}
|
|
5656
5674
|
class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
|
|
5657
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5658
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5675
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
5676
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' });
|
|
5659
5677
|
}
|
|
5660
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5678
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
|
|
5661
5679
|
type: Injectable,
|
|
5662
5680
|
args: [{ providedIn: 'root' }]
|
|
5663
5681
|
}] });
|
|
@@ -5756,10 +5774,10 @@ class StateManager {
|
|
|
5756
5774
|
// when merging, such as the query params so they are not lost on a refresh.
|
|
5757
5775
|
this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, finalUrl ?? this.rawUrlTree);
|
|
5758
5776
|
}
|
|
5759
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5760
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5777
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5778
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) });
|
|
5761
5779
|
}
|
|
5762
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5780
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: StateManager, decorators: [{
|
|
5763
5781
|
type: Injectable,
|
|
5764
5782
|
args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
|
|
5765
5783
|
}] });
|
|
@@ -5891,10 +5909,10 @@ class HistoryStateManager extends StateManager {
|
|
|
5891
5909
|
}
|
|
5892
5910
|
return { navigationId };
|
|
5893
5911
|
}
|
|
5894
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5895
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5912
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
5913
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: HistoryStateManager, providedIn: 'root' });
|
|
5896
5914
|
}
|
|
5897
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
5915
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: HistoryStateManager, decorators: [{
|
|
5898
5916
|
type: Injectable,
|
|
5899
5917
|
args: [{ providedIn: 'root' }]
|
|
5900
5918
|
}] });
|
|
@@ -6467,10 +6485,10 @@ class Router {
|
|
|
6467
6485
|
return Promise.reject(e);
|
|
6468
6486
|
});
|
|
6469
6487
|
}
|
|
6470
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
6471
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
6488
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6489
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: Router, providedIn: 'root' });
|
|
6472
6490
|
}
|
|
6473
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.
|
|
6491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.8", ngImport: i0, type: Router, decorators: [{
|
|
6474
6492
|
type: Injectable,
|
|
6475
6493
|
args: [{ providedIn: 'root' }]
|
|
6476
6494
|
}], ctorParameters: () => [] });
|