@angular/router 17.0.0-next.4 → 17.0.0-next.6
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/esm2022/src/components/empty_outlet.mjs +3 -3
- package/esm2022/src/directives/router_link.mjs +6 -6
- package/esm2022/src/directives/router_link_active.mjs +6 -6
- package/esm2022/src/directives/router_outlet.mjs +6 -6
- package/esm2022/src/errors.mjs +1 -1
- package/esm2022/src/models.mjs +1 -1
- package/esm2022/src/navigation_transition.mjs +35 -13
- package/esm2022/src/operators/prioritized_guard_value.mjs +2 -2
- package/esm2022/src/page_title_strategy.mjs +7 -7
- package/esm2022/src/private_export.mjs +2 -1
- package/esm2022/src/provide_router.mjs +10 -4
- package/esm2022/src/recognize.mjs +25 -19
- package/esm2022/src/route_reuse_strategy.mjs +6 -6
- package/esm2022/src/router.mjs +8 -26
- package/esm2022/src/router_config.mjs +1 -1
- package/esm2022/src/router_config_loader.mjs +51 -43
- package/esm2022/src/router_module.mjs +6 -6
- package/esm2022/src/router_outlet_context.mjs +3 -3
- package/esm2022/src/router_preloader.mjs +10 -10
- package/esm2022/src/router_scroller.mjs +4 -4
- package/esm2022/src/shared.mjs +2 -2
- package/esm2022/src/state_manager.mjs +4 -36
- package/esm2022/src/url_handling_strategy.mjs +6 -6
- package/esm2022/src/url_tree.mjs +3 -3
- package/esm2022/src/utils/view_transition.mjs +7 -2
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/router_testing_harness.mjs +6 -6
- package/esm2022/testing/src/router_testing_module.mjs +7 -69
- package/fesm2022/router.mjs +201 -205
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/testing.mjs +14 -69
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +1 -1
- package/index.d.ts +27 -27
- package/package.json +5 -5
- package/testing/index.d.ts +1 -19
- package/upgrade/index.d.ts +1 -1
package/fesm2022/router.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v17.0.0-next.
|
|
2
|
+
* @license Angular v17.0.0-next.6
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, Compiler,
|
|
8
|
+
import { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, Compiler, NgModuleFactory, NgZone, afterNextRender, ɵConsole, ɵInitialRenderPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, NgProbeToken, SkipSelf, NgModule, Inject, Version } from '@angular/core';
|
|
9
9
|
import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Subscription } from 'rxjs';
|
|
10
10
|
import * as i3 from '@angular/common';
|
|
11
|
-
import { Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';
|
|
11
|
+
import { DOCUMENT, Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';
|
|
12
12
|
import { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, mapTo, finalize, refCount, takeUntil, mergeAll } from 'rxjs/operators';
|
|
13
13
|
import * as i1 from '@angular/platform-browser';
|
|
14
14
|
|
|
@@ -23,7 +23,7 @@ const PRIMARY_OUTLET = 'primary';
|
|
|
23
23
|
* static string or `Route.resolve` if anything else. This allows us to reuse the existing route
|
|
24
24
|
* data/resolvers to support the title feature without new instrumentation in the `Router` pipeline.
|
|
25
25
|
*/
|
|
26
|
-
const RouteTitleKey = Symbol('RouteTitle');
|
|
26
|
+
const RouteTitleKey = /* @__PURE__ */ Symbol('RouteTitle');
|
|
27
27
|
class ParamsAsMap {
|
|
28
28
|
constructor(params) {
|
|
29
29
|
this.params = params || {};
|
|
@@ -425,10 +425,10 @@ function mapChildrenIntoArray(segment, fn) {
|
|
|
425
425
|
* @publicApi
|
|
426
426
|
*/
|
|
427
427
|
class UrlSerializer {
|
|
428
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
429
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
429
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
|
|
430
430
|
}
|
|
431
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
431
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlSerializer, decorators: [{
|
|
432
432
|
type: Injectable,
|
|
433
433
|
args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
|
|
434
434
|
}] });
|
|
@@ -1785,10 +1785,10 @@ class ChildrenOutletContexts {
|
|
|
1785
1785
|
getContext(childName) {
|
|
1786
1786
|
return this.contexts.get(childName) || null;
|
|
1787
1787
|
}
|
|
1788
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
1789
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
1788
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1789
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
|
|
1790
1790
|
}
|
|
1791
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
1791
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
|
|
1792
1792
|
type: Injectable,
|
|
1793
1793
|
args: [{ providedIn: 'root' }]
|
|
1794
1794
|
}] });
|
|
@@ -2495,10 +2495,10 @@ class RouterOutlet {
|
|
|
2495
2495
|
this.inputBinder?.bindActivatedRouteToOutletComponent(this);
|
|
2496
2496
|
this.activateEvents.emit(this.activated.instance);
|
|
2497
2497
|
}
|
|
2498
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
2499
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.
|
|
2498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2499
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.6", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: "name" }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 }); }
|
|
2500
2500
|
}
|
|
2501
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
2501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterOutlet, decorators: [{
|
|
2502
2502
|
type: Directive,
|
|
2503
2503
|
args: [{
|
|
2504
2504
|
selector: 'router-outlet',
|
|
@@ -2601,10 +2601,10 @@ class RoutedComponentInputBinder {
|
|
|
2601
2601
|
});
|
|
2602
2602
|
this.outletDataSubscriptions.set(outlet, dataSubscription);
|
|
2603
2603
|
}
|
|
2604
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
2605
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
2604
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2605
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RoutedComponentInputBinder }); }
|
|
2606
2606
|
}
|
|
2607
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
2607
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
|
|
2608
2608
|
type: Injectable
|
|
2609
2609
|
}] });
|
|
2610
2610
|
|
|
@@ -2684,10 +2684,10 @@ function isNavigationCancelingError$1(error) {
|
|
|
2684
2684
|
* to this `EmptyOutletComponent`.
|
|
2685
2685
|
*/
|
|
2686
2686
|
class ɵEmptyOutletComponent {
|
|
2687
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
2688
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.
|
|
2687
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2688
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.6", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
2689
2689
|
}
|
|
2690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
2690
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
|
|
2691
2691
|
type: Component,
|
|
2692
2692
|
args: [{
|
|
2693
2693
|
template: `<router-outlet></router-outlet>`,
|
|
@@ -3251,7 +3251,7 @@ function isEmptyError(e) {
|
|
|
3251
3251
|
return e instanceof EmptyError || e?.name === 'EmptyError';
|
|
3252
3252
|
}
|
|
3253
3253
|
|
|
3254
|
-
const INITIAL_VALUE = Symbol('INITIAL_VALUE');
|
|
3254
|
+
const INITIAL_VALUE = /* @__PURE__ */ Symbol('INITIAL_VALUE');
|
|
3255
3255
|
function prioritizedGuardValue() {
|
|
3256
3256
|
return switchMap(obs => {
|
|
3257
3257
|
return combineLatest(obs.map(o => o.pipe(take(1), startWith(INITIAL_VALUE))))
|
|
@@ -3664,6 +3664,7 @@ function recognize$1(injector, configLoader, rootComponentType, config, urlTree,
|
|
|
3664
3664
|
return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer)
|
|
3665
3665
|
.recognize();
|
|
3666
3666
|
}
|
|
3667
|
+
const MAX_ALLOWED_REDIRECTS = 31;
|
|
3667
3668
|
class Recognizer {
|
|
3668
3669
|
constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) {
|
|
3669
3670
|
this.injector = injector;
|
|
@@ -3673,8 +3674,9 @@ class Recognizer {
|
|
|
3673
3674
|
this.urlTree = urlTree;
|
|
3674
3675
|
this.paramsInheritanceStrategy = paramsInheritanceStrategy;
|
|
3675
3676
|
this.urlSerializer = urlSerializer;
|
|
3676
|
-
this.allowRedirects = true;
|
|
3677
3677
|
this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree);
|
|
3678
|
+
this.absoluteRedirectCount = 0;
|
|
3679
|
+
this.allowRedirects = true;
|
|
3678
3680
|
}
|
|
3679
3681
|
noMatchError(e) {
|
|
3680
3682
|
return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
@@ -3682,20 +3684,7 @@ class Recognizer {
|
|
|
3682
3684
|
}
|
|
3683
3685
|
recognize() {
|
|
3684
3686
|
const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;
|
|
3685
|
-
return this.
|
|
3686
|
-
.pipe(catchError((e) => {
|
|
3687
|
-
if (e instanceof AbsoluteRedirect) {
|
|
3688
|
-
// After an absolute redirect we do not apply any more redirects!
|
|
3689
|
-
// If this implementation changes, update the documentation note in `redirectTo`.
|
|
3690
|
-
this.allowRedirects = false;
|
|
3691
|
-
this.urlTree = e.urlTree;
|
|
3692
|
-
return this.match(e.urlTree);
|
|
3693
|
-
}
|
|
3694
|
-
if (e instanceof NoMatch) {
|
|
3695
|
-
throw this.noMatchError(e);
|
|
3696
|
-
}
|
|
3697
|
-
throw e;
|
|
3698
|
-
}), map(children => {
|
|
3687
|
+
return this.match(rootSegmentGroup).pipe(map(children => {
|
|
3699
3688
|
// Use Object.freeze to prevent readers of the Router state from modifying it outside
|
|
3700
3689
|
// of a navigation, resulting in the router being out of sync with the browser.
|
|
3701
3690
|
const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze({ ...this.urlTree.queryParams }), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {});
|
|
@@ -3711,9 +3700,13 @@ class Recognizer {
|
|
|
3711
3700
|
return { state: routeState, tree };
|
|
3712
3701
|
}));
|
|
3713
3702
|
}
|
|
3714
|
-
match(
|
|
3715
|
-
const expanded$ = this.processSegmentGroup(this.injector, this.config,
|
|
3703
|
+
match(rootSegmentGroup) {
|
|
3704
|
+
const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET);
|
|
3716
3705
|
return expanded$.pipe(catchError((e) => {
|
|
3706
|
+
if (e instanceof AbsoluteRedirect) {
|
|
3707
|
+
this.urlTree = e.urlTree;
|
|
3708
|
+
return this.match(e.urlTree.root);
|
|
3709
|
+
}
|
|
3717
3710
|
if (e instanceof NoMatch) {
|
|
3718
3711
|
throw this.noMatchError(e);
|
|
3719
3712
|
}
|
|
@@ -3807,7 +3800,7 @@ class Recognizer {
|
|
|
3807
3800
|
if (route.redirectTo === undefined) {
|
|
3808
3801
|
return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet);
|
|
3809
3802
|
}
|
|
3810
|
-
if (allowRedirects &&
|
|
3803
|
+
if (this.allowRedirects && allowRedirects) {
|
|
3811
3804
|
return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet);
|
|
3812
3805
|
}
|
|
3813
3806
|
return noMatch$1(rawSegment);
|
|
@@ -3817,6 +3810,19 @@ class Recognizer {
|
|
|
3817
3810
|
match(segmentGroup, route, segments);
|
|
3818
3811
|
if (!matched)
|
|
3819
3812
|
return noMatch$1(segmentGroup);
|
|
3813
|
+
// TODO(atscott): Move all of this under an if(ngDevMode) as a breaking change and allow stack
|
|
3814
|
+
// size exceeded in production
|
|
3815
|
+
if (route.redirectTo.startsWith('/')) {
|
|
3816
|
+
this.absoluteRedirectCount++;
|
|
3817
|
+
if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) {
|
|
3818
|
+
if (ngDevMode) {
|
|
3819
|
+
throw new ɵRuntimeError(4016 /* RuntimeErrorCode.INFINITE_REDIRECT */, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'.\n` +
|
|
3820
|
+
`This is currently a dev mode only error but will become a` +
|
|
3821
|
+
` call stack size exceeded error in production in a future major version.`);
|
|
3822
|
+
}
|
|
3823
|
+
this.allowRedirects = false;
|
|
3824
|
+
}
|
|
3825
|
+
}
|
|
3820
3826
|
const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);
|
|
3821
3827
|
return this.applyRedirects.lineralizeSegments(route, newTree)
|
|
3822
3828
|
.pipe(mergeMap((newSegments) => {
|
|
@@ -4092,10 +4098,10 @@ class TitleStrategy {
|
|
|
4092
4098
|
getResolvedTitleForRoute(snapshot) {
|
|
4093
4099
|
return snapshot.data[RouteTitleKey];
|
|
4094
4100
|
}
|
|
4095
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4096
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4102
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
|
|
4097
4103
|
}
|
|
4098
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: TitleStrategy, decorators: [{
|
|
4099
4105
|
type: Injectable,
|
|
4100
4106
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
|
|
4101
4107
|
}] });
|
|
@@ -4118,13 +4124,13 @@ class DefaultTitleStrategy extends TitleStrategy {
|
|
|
4118
4124
|
this.title.setTitle(title);
|
|
4119
4125
|
}
|
|
4120
4126
|
}
|
|
4121
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4122
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4128
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
|
|
4123
4129
|
}
|
|
4124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
|
|
4125
4131
|
type: Injectable,
|
|
4126
4132
|
args: [{ providedIn: 'root' }]
|
|
4127
|
-
}], ctorParameters:
|
|
4133
|
+
}], ctorParameters: () => [{ type: i1.Title }] });
|
|
4128
4134
|
|
|
4129
4135
|
/**
|
|
4130
4136
|
* A [DI token](guide/glossary/#di-token) for the router service.
|
|
@@ -4189,33 +4195,8 @@ class RouterConfigLoader {
|
|
|
4189
4195
|
if (this.onLoadStartListener) {
|
|
4190
4196
|
this.onLoadStartListener(route);
|
|
4191
4197
|
}
|
|
4192
|
-
const moduleFactoryOrRoutes$ =
|
|
4193
|
-
const loadRunner = moduleFactoryOrRoutes$.pipe(
|
|
4194
|
-
if (this.onLoadEndListener) {
|
|
4195
|
-
this.onLoadEndListener(route);
|
|
4196
|
-
}
|
|
4197
|
-
// This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is no
|
|
4198
|
-
// injector associated with lazy loading a `Route` array.
|
|
4199
|
-
let injector;
|
|
4200
|
-
let rawRoutes;
|
|
4201
|
-
let requireStandaloneComponents = false;
|
|
4202
|
-
if (Array.isArray(factoryOrRoutes)) {
|
|
4203
|
-
rawRoutes = factoryOrRoutes;
|
|
4204
|
-
requireStandaloneComponents = true;
|
|
4205
|
-
}
|
|
4206
|
-
else {
|
|
4207
|
-
injector = factoryOrRoutes.create(parentInjector).injector;
|
|
4208
|
-
// When loading a module that doesn't provide `RouterModule.forChild()` preloader
|
|
4209
|
-
// will get stuck in an infinite loop. The child module's Injector will look to
|
|
4210
|
-
// its parent `Injector` when it doesn't find any ROUTES so it will return routes
|
|
4211
|
-
// for it's parent module instead.
|
|
4212
|
-
rawRoutes = injector.get(ROUTES, [], InjectFlags.Self | InjectFlags.Optional).flat();
|
|
4213
|
-
}
|
|
4214
|
-
const routes = rawRoutes.map(standardizeConfig);
|
|
4215
|
-
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
4216
|
-
validateConfig(routes, route.path, requireStandaloneComponents);
|
|
4217
|
-
return { routes, injector };
|
|
4218
|
-
}), finalize(() => {
|
|
4198
|
+
const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener);
|
|
4199
|
+
const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => {
|
|
4219
4200
|
this.childrenLoaders.delete(route);
|
|
4220
4201
|
}));
|
|
4221
4202
|
// Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much
|
|
@@ -4224,24 +4205,57 @@ class RouterConfigLoader {
|
|
|
4224
4205
|
this.childrenLoaders.set(route, loader);
|
|
4225
4206
|
return loader;
|
|
4226
4207
|
}
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
.pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => {
|
|
4230
|
-
if (t instanceof NgModuleFactory || Array.isArray(t)) {
|
|
4231
|
-
return of(t);
|
|
4232
|
-
}
|
|
4233
|
-
else {
|
|
4234
|
-
return from(this.compiler.compileModuleAsync(t));
|
|
4235
|
-
}
|
|
4236
|
-
}));
|
|
4237
|
-
}
|
|
4238
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4239
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
|
|
4208
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4209
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
|
|
4240
4210
|
}
|
|
4241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterConfigLoader, decorators: [{
|
|
4242
4212
|
type: Injectable,
|
|
4243
4213
|
args: [{ providedIn: 'root' }]
|
|
4244
4214
|
}] });
|
|
4215
|
+
/**
|
|
4216
|
+
* Executes a `route.loadChildren` callback and converts the result to an array of child routes and
|
|
4217
|
+
* an injector if that callback returned a module.
|
|
4218
|
+
*
|
|
4219
|
+
* This function is used for the route discovery during prerendering
|
|
4220
|
+
* in @angular-devkit/build-angular. If there are any updates to the contract here, it will require
|
|
4221
|
+
* an update to the extractor.
|
|
4222
|
+
*/
|
|
4223
|
+
function loadChildren(route, compiler, parentInjector, onLoadEndListener) {
|
|
4224
|
+
return wrapIntoObservable(route.loadChildren())
|
|
4225
|
+
.pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => {
|
|
4226
|
+
if (t instanceof NgModuleFactory || Array.isArray(t)) {
|
|
4227
|
+
return of(t);
|
|
4228
|
+
}
|
|
4229
|
+
else {
|
|
4230
|
+
return from(compiler.compileModuleAsync(t));
|
|
4231
|
+
}
|
|
4232
|
+
}), map((factoryOrRoutes) => {
|
|
4233
|
+
if (onLoadEndListener) {
|
|
4234
|
+
onLoadEndListener(route);
|
|
4235
|
+
}
|
|
4236
|
+
// This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is
|
|
4237
|
+
// no injector associated with lazy loading a `Route` array.
|
|
4238
|
+
let injector;
|
|
4239
|
+
let rawRoutes;
|
|
4240
|
+
let requireStandaloneComponents = false;
|
|
4241
|
+
if (Array.isArray(factoryOrRoutes)) {
|
|
4242
|
+
rawRoutes = factoryOrRoutes;
|
|
4243
|
+
requireStandaloneComponents = true;
|
|
4244
|
+
}
|
|
4245
|
+
else {
|
|
4246
|
+
injector = factoryOrRoutes.create(parentInjector).injector;
|
|
4247
|
+
// When loading a module that doesn't provide `RouterModule.forChild()` preloader
|
|
4248
|
+
// will get stuck in an infinite loop. The child module's Injector will look to
|
|
4249
|
+
// its parent `Injector` when it doesn't find any ROUTES so it will return routes
|
|
4250
|
+
// for it's parent module instead.
|
|
4251
|
+
rawRoutes = injector.get(ROUTES, [], { optional: true, self: true }).flat();
|
|
4252
|
+
}
|
|
4253
|
+
const routes = rawRoutes.map(standardizeConfig);
|
|
4254
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
4255
|
+
validateConfig(routes, route.path, requireStandaloneComponents);
|
|
4256
|
+
return { routes, injector };
|
|
4257
|
+
}));
|
|
4258
|
+
}
|
|
4245
4259
|
function isWrappedDefaultExport(value) {
|
|
4246
4260
|
// We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be
|
|
4247
4261
|
// dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that
|
|
@@ -4262,10 +4276,10 @@ function maybeUnwrapDefaultExport(input) {
|
|
|
4262
4276
|
* @publicApi
|
|
4263
4277
|
*/
|
|
4264
4278
|
class UrlHandlingStrategy {
|
|
4265
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4266
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4280
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
|
|
4267
4281
|
}
|
|
4268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
|
|
4269
4283
|
type: Injectable,
|
|
4270
4284
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
|
|
4271
4285
|
}] });
|
|
@@ -4282,16 +4296,17 @@ class DefaultUrlHandlingStrategy {
|
|
|
4282
4296
|
merge(newUrlPart, wholeUrl) {
|
|
4283
4297
|
return newUrlPart;
|
|
4284
4298
|
}
|
|
4285
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4286
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4300
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
|
|
4287
4301
|
}
|
|
4288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
|
|
4289
4303
|
type: Injectable,
|
|
4290
4304
|
args: [{ providedIn: 'root' }]
|
|
4291
4305
|
}] });
|
|
4292
4306
|
|
|
4293
4307
|
/// <reference types="@types/dom-view-transitions" />
|
|
4294
4308
|
const CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition helper' : '');
|
|
4309
|
+
const VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? 'view transition options' : '');
|
|
4295
4310
|
/**
|
|
4296
4311
|
* A helper function for using browser view transitions. This function skips the call to
|
|
4297
4312
|
* `startViewTransition` if the browser does not support it.
|
|
@@ -4299,9 +4314,12 @@ const CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition h
|
|
|
4299
4314
|
* @returns A Promise that resolves when the view transition callback begins.
|
|
4300
4315
|
*/
|
|
4301
4316
|
function createViewTransition(injector) {
|
|
4317
|
+
const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS);
|
|
4318
|
+
const document = injector.get(DOCUMENT);
|
|
4302
4319
|
// Create promises outside the Angular zone to avoid causing extra change detections
|
|
4303
4320
|
return injector.get(NgZone).runOutsideAngular(() => {
|
|
4304
|
-
if (!document.startViewTransition) {
|
|
4321
|
+
if (!document.startViewTransition || transitionOptions.skipNextTransition) {
|
|
4322
|
+
transitionOptions.skipNextTransition = false;
|
|
4305
4323
|
return Promise.resolve();
|
|
4306
4324
|
}
|
|
4307
4325
|
let resolveViewTransitionStarted;
|
|
@@ -4346,6 +4364,7 @@ class NavigationTransitions {
|
|
|
4346
4364
|
this.environmentInjector = inject(EnvironmentInjector);
|
|
4347
4365
|
this.urlSerializer = inject(UrlSerializer);
|
|
4348
4366
|
this.rootContexts = inject(ChildrenOutletContexts);
|
|
4367
|
+
this.location = inject(Location);
|
|
4349
4368
|
this.inputBindingEnabled = inject(INPUT_BINDER, { optional: true }) !== null;
|
|
4350
4369
|
this.titleStrategy = inject(TitleStrategy);
|
|
4351
4370
|
this.options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
@@ -4379,7 +4398,6 @@ class NavigationTransitions {
|
|
|
4379
4398
|
id: 0,
|
|
4380
4399
|
currentUrlTree: initialUrlTree,
|
|
4381
4400
|
currentRawUrl: initialUrlTree,
|
|
4382
|
-
currentBrowserUrl: initialUrlTree,
|
|
4383
4401
|
extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree),
|
|
4384
4402
|
urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree),
|
|
4385
4403
|
rawUrl: initialUrlTree,
|
|
@@ -4420,14 +4438,8 @@ class NavigationTransitions {
|
|
|
4420
4438
|
},
|
|
4421
4439
|
};
|
|
4422
4440
|
}), switchMap(t => {
|
|
4423
|
-
const browserUrlTree = t.currentBrowserUrl.toString();
|
|
4424
4441
|
const urlTransition = !router.navigated ||
|
|
4425
|
-
|
|
4426
|
-
// Navigations which succeed or ones which fail and are cleaned up
|
|
4427
|
-
// correctly should result in `browserUrlTree` and `currentUrlTree`
|
|
4428
|
-
// matching. If this is not the case, assume something went wrong and
|
|
4429
|
-
// try processing the URL again.
|
|
4430
|
-
browserUrlTree !== t.currentUrlTree.toString();
|
|
4442
|
+
this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();
|
|
4431
4443
|
const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;
|
|
4432
4444
|
if (!urlTransition && onSameUrlNavigation !== 'reload') {
|
|
4433
4445
|
const reason = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
@@ -4660,13 +4672,40 @@ class NavigationTransitions {
|
|
|
4660
4672
|
this.events.next(navCancel);
|
|
4661
4673
|
t.resolve(false);
|
|
4662
4674
|
}
|
|
4663
|
-
|
|
4664
|
-
|
|
4665
|
-
|
|
4666
|
-
|
|
4675
|
+
/**
|
|
4676
|
+
* @returns Whether we're navigating to somewhere that is not what the Router is
|
|
4677
|
+
* currently set to.
|
|
4678
|
+
*/
|
|
4679
|
+
isUpdatingInternalState() {
|
|
4680
|
+
// TODO(atscott): The serializer should likely be used instead of
|
|
4681
|
+
// `UrlTree.toString()`. Custom serializers are often written to handle
|
|
4682
|
+
// things better than the default one (objects, for example will be
|
|
4683
|
+
// [Object object] with the custom serializer and be "the same" when they
|
|
4684
|
+
// aren't).
|
|
4685
|
+
// (Same for isUpdatedBrowserUrl)
|
|
4686
|
+
return this.currentTransition?.extractedUrl.toString() !==
|
|
4687
|
+
this.currentTransition?.currentUrlTree.toString();
|
|
4688
|
+
}
|
|
4689
|
+
/**
|
|
4690
|
+
* @returns Whether we're updating the browser URL to something new (navigation is going
|
|
4691
|
+
* to somewhere not displayed in the URL bar and we will update the URL
|
|
4692
|
+
* bar if navigation succeeds).
|
|
4693
|
+
*/
|
|
4694
|
+
isUpdatedBrowserUrl() {
|
|
4695
|
+
// The extracted URL is the part of the URL that this application cares about. `extract` may
|
|
4696
|
+
// return only part of the browser URL and that part may have not changed even if some other
|
|
4697
|
+
// portion of the URL did.
|
|
4698
|
+
const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true)));
|
|
4699
|
+
return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
|
|
4700
|
+
!this.currentTransition?.extras.skipLocationChange;
|
|
4701
|
+
}
|
|
4702
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4703
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
|
|
4704
|
+
}
|
|
4705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NavigationTransitions, decorators: [{
|
|
4667
4706
|
type: Injectable,
|
|
4668
4707
|
args: [{ providedIn: 'root' }]
|
|
4669
|
-
}], ctorParameters:
|
|
4708
|
+
}], ctorParameters: () => [] });
|
|
4670
4709
|
function isBrowserTriggeredNavigation(source) {
|
|
4671
4710
|
return source !== IMPERATIVE_NAVIGATION;
|
|
4672
4711
|
}
|
|
@@ -4679,10 +4718,10 @@ function isBrowserTriggeredNavigation(source) {
|
|
|
4679
4718
|
* @publicApi
|
|
4680
4719
|
*/
|
|
4681
4720
|
class RouteReuseStrategy {
|
|
4682
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4683
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4721
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4722
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
|
|
4684
4723
|
}
|
|
4685
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4724
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouteReuseStrategy, decorators: [{
|
|
4686
4725
|
type: Injectable,
|
|
4687
4726
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
|
|
4688
4727
|
}] });
|
|
@@ -4733,10 +4772,10 @@ class BaseRouteReuseStrategy {
|
|
|
4733
4772
|
}
|
|
4734
4773
|
}
|
|
4735
4774
|
class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
|
|
4736
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4737
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4775
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4776
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
|
|
4738
4777
|
}
|
|
4739
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4778
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
|
|
4740
4779
|
type: Injectable,
|
|
4741
4780
|
args: [{ providedIn: 'root' }]
|
|
4742
4781
|
}] });
|
|
@@ -4755,9 +4794,6 @@ class StateManager {
|
|
|
4755
4794
|
* Represents the activated `UrlTree` that the `Router` is configured to handle (through
|
|
4756
4795
|
* `UrlHandlingStrategy`). That is, after we find the route config tree that we're going to
|
|
4757
4796
|
* activate, run guards, and are just about to activate the route, we set the currentUrlTree.
|
|
4758
|
-
*
|
|
4759
|
-
* This should match the `browserUrlTree` when a navigation succeeds. If the
|
|
4760
|
-
* `UrlHandlingStrategy.shouldProcessUrl` is `false`, only the `browserUrlTree` is updated.
|
|
4761
4797
|
* @internal
|
|
4762
4798
|
*/
|
|
4763
4799
|
this.currentUrlTree = new UrlTree();
|
|
@@ -4789,23 +4825,6 @@ class StateManager {
|
|
|
4789
4825
|
*
|
|
4790
4826
|
*/
|
|
4791
4827
|
this.rawUrlTree = this.currentUrlTree;
|
|
4792
|
-
/**
|
|
4793
|
-
* Meant to represent the part of the browser url that the `Router` is set up to handle (via the
|
|
4794
|
-
* `UrlHandlingStrategy`). This value is updated immediately after the browser url is updated (or
|
|
4795
|
-
* the browser url update is skipped via `skipLocationChange`). With that, note that
|
|
4796
|
-
* `browserUrlTree` _may not_ reflect the actual browser URL for two reasons:
|
|
4797
|
-
*
|
|
4798
|
-
* 1. `UrlHandlingStrategy` only handles part of the URL
|
|
4799
|
-
* 2. `skipLocationChange` does not update the browser url.
|
|
4800
|
-
*
|
|
4801
|
-
* So to reiterate, `browserUrlTree` only represents the Router's internal understanding of the
|
|
4802
|
-
* current route, either before guards with `urlUpdateStrategy === 'eager'` or right before
|
|
4803
|
-
* activation with `'deferred'`.
|
|
4804
|
-
*
|
|
4805
|
-
* This should match the `currentUrlTree` when the navigation succeeds.
|
|
4806
|
-
* @internal
|
|
4807
|
-
*/
|
|
4808
|
-
this.browserUrlTree = this.currentUrlTree;
|
|
4809
4828
|
/**
|
|
4810
4829
|
* The id of the currently active page in the router.
|
|
4811
4830
|
* Updated to the transition's target id on a successful navigation.
|
|
@@ -4833,7 +4852,6 @@ class StateManager {
|
|
|
4833
4852
|
createStateMemento() {
|
|
4834
4853
|
return {
|
|
4835
4854
|
rawUrlTree: this.rawUrlTree,
|
|
4836
|
-
browserUrlTree: this.browserUrlTree,
|
|
4837
4855
|
currentUrlTree: this.currentUrlTree,
|
|
4838
4856
|
routerState: this.routerState,
|
|
4839
4857
|
};
|
|
@@ -4841,11 +4859,6 @@ class StateManager {
|
|
|
4841
4859
|
handleNavigationEvent(e, currentTransition) {
|
|
4842
4860
|
if (e instanceof NavigationStart) {
|
|
4843
4861
|
this.stateMemento = this.createStateMemento();
|
|
4844
|
-
// If the source of the navigation is from a browser event, the URL is
|
|
4845
|
-
// already updated. We already need to sync the internal state.
|
|
4846
|
-
if (isBrowserTriggeredNavigation(currentTransition.trigger)) {
|
|
4847
|
-
this.browserUrlTree = currentTransition.extractedUrl;
|
|
4848
|
-
}
|
|
4849
4862
|
}
|
|
4850
4863
|
else if (e instanceof NavigationSkipped) {
|
|
4851
4864
|
this.rawUrlTree = currentTransition.initialUrl;
|
|
@@ -4856,7 +4869,6 @@ class StateManager {
|
|
|
4856
4869
|
const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);
|
|
4857
4870
|
this.setBrowserUrl(rawUrl, currentTransition);
|
|
4858
4871
|
}
|
|
4859
|
-
this.browserUrlTree = currentTransition.finalUrl;
|
|
4860
4872
|
}
|
|
4861
4873
|
}
|
|
4862
4874
|
else if (e instanceof BeforeActivateRoutes) {
|
|
@@ -4868,7 +4880,6 @@ class StateManager {
|
|
|
4868
4880
|
if (!currentTransition.extras.skipLocationChange) {
|
|
4869
4881
|
this.setBrowserUrl(this.rawUrlTree, currentTransition);
|
|
4870
4882
|
}
|
|
4871
|
-
this.browserUrlTree = currentTransition.finalUrl;
|
|
4872
4883
|
}
|
|
4873
4884
|
}
|
|
4874
4885
|
else if (e instanceof NavigationCancel &&
|
|
@@ -4920,9 +4931,6 @@ class StateManager {
|
|
|
4920
4931
|
// finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).
|
|
4921
4932
|
// We still need to reset the router state back to what it was when the navigation started.
|
|
4922
4933
|
this.resetState(navigation);
|
|
4923
|
-
// TODO(atscott): resetting the `browserUrlTree` should really be done in `resetState`.
|
|
4924
|
-
// Investigate if this can be done by running TGP.
|
|
4925
|
-
this.browserUrlTree = this.stateMemento.browserUrlTree;
|
|
4926
4934
|
this.resetUrlToCurrentUrlTree();
|
|
4927
4935
|
}
|
|
4928
4936
|
else {
|
|
@@ -4961,10 +4969,10 @@ class StateManager {
|
|
|
4961
4969
|
}
|
|
4962
4970
|
return { navigationId };
|
|
4963
4971
|
}
|
|
4964
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4965
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4972
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4973
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: StateManager, providedIn: 'root' }); }
|
|
4966
4974
|
}
|
|
4967
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4975
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: StateManager, decorators: [{
|
|
4968
4976
|
type: Injectable,
|
|
4969
4977
|
args: [{ providedIn: 'root' }]
|
|
4970
4978
|
}] });
|
|
@@ -5005,9 +5013,6 @@ function afterNextNavigation(router, action) {
|
|
|
5005
5013
|
function defaultErrorHandler(error) {
|
|
5006
5014
|
throw error;
|
|
5007
5015
|
}
|
|
5008
|
-
function defaultMalformedUriErrorHandler(error, urlSerializer, url) {
|
|
5009
|
-
return urlSerializer.parse('/');
|
|
5010
|
-
}
|
|
5011
5016
|
/**
|
|
5012
5017
|
* The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`
|
|
5013
5018
|
* (exact = true).
|
|
@@ -5047,9 +5052,6 @@ class Router {
|
|
|
5047
5052
|
get rawUrlTree() {
|
|
5048
5053
|
return this.stateManager.rawUrlTree;
|
|
5049
5054
|
}
|
|
5050
|
-
get browserUrlTree() {
|
|
5051
|
-
return this.stateManager.browserUrlTree;
|
|
5052
|
-
}
|
|
5053
5055
|
/**
|
|
5054
5056
|
* An event stream for routing events.
|
|
5055
5057
|
*/
|
|
@@ -5092,15 +5094,6 @@ class Router {
|
|
|
5092
5094
|
* @see {@link withNavigationErrorHandler}
|
|
5093
5095
|
*/
|
|
5094
5096
|
this.errorHandler = this.options.errorHandler || defaultErrorHandler;
|
|
5095
|
-
/**
|
|
5096
|
-
* A handler for errors thrown by `Router.parseUrl(url)`
|
|
5097
|
-
* when `url` contains an invalid character.
|
|
5098
|
-
* The most common case is a `%` sign
|
|
5099
|
-
* that's not encoded and is not part of a percent encoded sequence.
|
|
5100
|
-
*
|
|
5101
|
-
* @see {@link RouterModule}
|
|
5102
|
-
*/
|
|
5103
|
-
this.malformedUriErrorHandler = this.options.malformedUriErrorHandler || defaultMalformedUriErrorHandler;
|
|
5104
5097
|
/**
|
|
5105
5098
|
* True if at least one navigation event has occurred,
|
|
5106
5099
|
* false otherwise.
|
|
@@ -5478,14 +5471,12 @@ class Router {
|
|
|
5478
5471
|
}
|
|
5479
5472
|
/** Parses a string into a `UrlTree` */
|
|
5480
5473
|
parseUrl(url) {
|
|
5481
|
-
let urlTree;
|
|
5482
5474
|
try {
|
|
5483
|
-
|
|
5475
|
+
return this.urlSerializer.parse(url);
|
|
5484
5476
|
}
|
|
5485
|
-
catch
|
|
5486
|
-
|
|
5477
|
+
catch {
|
|
5478
|
+
return this.urlSerializer.parse('/');
|
|
5487
5479
|
}
|
|
5488
|
-
return urlTree;
|
|
5489
5480
|
}
|
|
5490
5481
|
isActive(url, matchOptions) {
|
|
5491
5482
|
let options;
|
|
@@ -5543,7 +5534,6 @@ class Router {
|
|
|
5543
5534
|
restoredState,
|
|
5544
5535
|
currentUrlTree: this.currentUrlTree,
|
|
5545
5536
|
currentRawUrl: this.currentUrlTree,
|
|
5546
|
-
currentBrowserUrl: this.browserUrlTree,
|
|
5547
5537
|
rawUrl,
|
|
5548
5538
|
extras,
|
|
5549
5539
|
resolve,
|
|
@@ -5558,13 +5548,13 @@ class Router {
|
|
|
5558
5548
|
return Promise.reject(e);
|
|
5559
5549
|
});
|
|
5560
5550
|
}
|
|
5561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5562
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5551
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5552
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: Router, providedIn: 'root' }); }
|
|
5563
5553
|
}
|
|
5564
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5554
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: Router, decorators: [{
|
|
5565
5555
|
type: Injectable,
|
|
5566
5556
|
args: [{ providedIn: 'root' }]
|
|
5567
|
-
}], ctorParameters:
|
|
5557
|
+
}], ctorParameters: () => [] });
|
|
5568
5558
|
function validateCommands(commands) {
|
|
5569
5559
|
for (let i = 0; i < commands.length; i++) {
|
|
5570
5560
|
const cmd = commands[i];
|
|
@@ -5832,19 +5822,19 @@ class RouterLink {
|
|
|
5832
5822
|
preserveFragment: this.preserveFragment,
|
|
5833
5823
|
});
|
|
5834
5824
|
}
|
|
5835
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5836
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-next.
|
|
5825
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterLink, deps: [{ token: Router }, { token: ActivatedRoute }, { token: 'tabindex', attribute: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5826
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-next.6", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
5837
5827
|
}
|
|
5838
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5828
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterLink, decorators: [{
|
|
5839
5829
|
type: Directive,
|
|
5840
5830
|
args: [{
|
|
5841
5831
|
selector: '[routerLink]',
|
|
5842
5832
|
standalone: true,
|
|
5843
5833
|
}]
|
|
5844
|
-
}], ctorParameters:
|
|
5834
|
+
}], ctorParameters: () => [{ type: Router }, { type: ActivatedRoute }, { type: undefined, decorators: [{
|
|
5845
5835
|
type: Attribute,
|
|
5846
5836
|
args: ['tabindex']
|
|
5847
|
-
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i3.LocationStrategy }]
|
|
5837
|
+
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i3.LocationStrategy }], propDecorators: { target: [{
|
|
5848
5838
|
type: HostBinding,
|
|
5849
5839
|
args: ['attr.target']
|
|
5850
5840
|
}, {
|
|
@@ -6058,19 +6048,19 @@ class RouterLinkActive {
|
|
|
6058
6048
|
const isActiveCheckFn = this.isLinkActive(this.router);
|
|
6059
6049
|
return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);
|
|
6060
6050
|
}
|
|
6061
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6062
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.
|
|
6051
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6052
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.6", type: RouterLinkActive, isStandalone: true, selector: "[routerLinkActive]", inputs: { routerLinkActiveOptions: "routerLinkActiveOptions", ariaCurrentWhenActive: "ariaCurrentWhenActive", routerLinkActive: "routerLinkActive" }, outputs: { isActiveChange: "isActiveChange" }, queries: [{ propertyName: "links", predicate: RouterLink, descendants: true }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 }); }
|
|
6063
6053
|
}
|
|
6064
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6054
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterLinkActive, decorators: [{
|
|
6065
6055
|
type: Directive,
|
|
6066
6056
|
args: [{
|
|
6067
6057
|
selector: '[routerLinkActive]',
|
|
6068
6058
|
exportAs: 'routerLinkActive',
|
|
6069
6059
|
standalone: true,
|
|
6070
6060
|
}]
|
|
6071
|
-
}], ctorParameters:
|
|
6061
|
+
}], ctorParameters: () => [{ type: Router }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: RouterLink, decorators: [{
|
|
6072
6062
|
type: Optional
|
|
6073
|
-
}] }]
|
|
6063
|
+
}] }], propDecorators: { links: [{
|
|
6074
6064
|
type: ContentChildren,
|
|
6075
6065
|
args: [RouterLink, { descendants: true }]
|
|
6076
6066
|
}], routerLinkActiveOptions: [{
|
|
@@ -6113,10 +6103,10 @@ class PreloadAllModules {
|
|
|
6113
6103
|
preload(route, fn) {
|
|
6114
6104
|
return fn().pipe(catchError(() => of(null)));
|
|
6115
6105
|
}
|
|
6116
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6117
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6107
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
|
|
6118
6108
|
}
|
|
6119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: PreloadAllModules, decorators: [{
|
|
6120
6110
|
type: Injectable,
|
|
6121
6111
|
args: [{ providedIn: 'root' }]
|
|
6122
6112
|
}] });
|
|
@@ -6133,10 +6123,10 @@ class NoPreloading {
|
|
|
6133
6123
|
preload(route, fn) {
|
|
6134
6124
|
return of(null);
|
|
6135
6125
|
}
|
|
6136
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6137
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6127
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
|
|
6138
6128
|
}
|
|
6139
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NoPreloading, decorators: [{
|
|
6140
6130
|
type: Injectable,
|
|
6141
6131
|
args: [{ providedIn: 'root' }]
|
|
6142
6132
|
}] });
|
|
@@ -6229,13 +6219,13 @@ class RouterPreloader {
|
|
|
6229
6219
|
}
|
|
6230
6220
|
});
|
|
6231
6221
|
}
|
|
6232
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6233
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6222
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6223
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
|
|
6234
6224
|
}
|
|
6235
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6225
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterPreloader, decorators: [{
|
|
6236
6226
|
type: Injectable,
|
|
6237
6227
|
args: [{ providedIn: 'root' }]
|
|
6238
|
-
}], ctorParameters:
|
|
6228
|
+
}], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
|
|
6239
6229
|
|
|
6240
6230
|
const ROUTER_SCROLLER = new InjectionToken('');
|
|
6241
6231
|
class RouterScroller {
|
|
@@ -6325,12 +6315,12 @@ class RouterScroller {
|
|
|
6325
6315
|
this.routerEventsSubscription?.unsubscribe();
|
|
6326
6316
|
this.scrollEventsSubscription?.unsubscribe();
|
|
6327
6317
|
}
|
|
6328
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6329
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6318
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6319
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterScroller }); }
|
|
6330
6320
|
}
|
|
6331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6321
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterScroller, decorators: [{
|
|
6332
6322
|
type: Injectable
|
|
6333
|
-
}], ctorParameters:
|
|
6323
|
+
}], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
|
|
6334
6324
|
|
|
6335
6325
|
/**
|
|
6336
6326
|
* Sets up providers necessary to enable `Router` functionality for the application.
|
|
@@ -6845,8 +6835,14 @@ function withComponentInputBinding() {
|
|
|
6845
6835
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API
|
|
6846
6836
|
* @experimental
|
|
6847
6837
|
*/
|
|
6848
|
-
function withViewTransitions() {
|
|
6849
|
-
const providers = [
|
|
6838
|
+
function withViewTransitions(options) {
|
|
6839
|
+
const providers = [
|
|
6840
|
+
{ provide: CREATE_VIEW_TRANSITION, useValue: createViewTransition },
|
|
6841
|
+
{
|
|
6842
|
+
provide: VIEW_TRANSITION_OPTIONS,
|
|
6843
|
+
useValue: { skipNextTransition: !!options?.skipInitialTransition }
|
|
6844
|
+
},
|
|
6845
|
+
];
|
|
6850
6846
|
return routerFeature(9 /* RouterFeatureKind.ViewTransitionsFeature */, providers);
|
|
6851
6847
|
}
|
|
6852
6848
|
|
|
@@ -6967,22 +6963,22 @@ class RouterModule {
|
|
|
6967
6963
|
providers: [{ provide: ROUTES, multi: true, useValue: routes }],
|
|
6968
6964
|
};
|
|
6969
6965
|
}
|
|
6970
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6971
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.
|
|
6972
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6966
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6967
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
|
|
6968
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule }); }
|
|
6973
6969
|
}
|
|
6974
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6970
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule, decorators: [{
|
|
6975
6971
|
type: NgModule,
|
|
6976
6972
|
args: [{
|
|
6977
6973
|
imports: ROUTER_DIRECTIVES,
|
|
6978
6974
|
exports: ROUTER_DIRECTIVES,
|
|
6979
6975
|
}]
|
|
6980
|
-
}], ctorParameters:
|
|
6976
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
6981
6977
|
type: Optional
|
|
6982
6978
|
}, {
|
|
6983
6979
|
type: Inject,
|
|
6984
6980
|
args: [ROUTER_FORROOT_GUARD]
|
|
6985
|
-
}] }]
|
|
6981
|
+
}] }] });
|
|
6986
6982
|
/**
|
|
6987
6983
|
* For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`
|
|
6988
6984
|
* because it reads from the `ExtraOptions` which should not be used in the standalone world.
|
|
@@ -7116,7 +7112,7 @@ function mapToResolve(provider) {
|
|
|
7116
7112
|
/**
|
|
7117
7113
|
* @publicApi
|
|
7118
7114
|
*/
|
|
7119
|
-
const VERSION = new Version('17.0.0-next.
|
|
7115
|
+
const VERSION = new Version('17.0.0-next.6');
|
|
7120
7116
|
|
|
7121
7117
|
/**
|
|
7122
7118
|
* @module
|
|
@@ -7131,5 +7127,5 @@ const VERSION = new Version('17.0.0-next.4');
|
|
|
7131
7127
|
* Generated bundle index. Do not edit.
|
|
7132
7128
|
*/
|
|
7133
7129
|
|
|
7134
|
-
export { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, withViewTransitions, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation };
|
|
7130
|
+
export { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, withViewTransitions, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren };
|
|
7135
7131
|
//# sourceMappingURL=router.mjs.map
|