@angular/router 17.0.0-next.3 → 17.0.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/components/empty_outlet.mjs +3 -3
- package/esm2022/src/directives/router_link.mjs +3 -3
- package/esm2022/src/directives/router_link_active.mjs +3 -3
- package/esm2022/src/directives/router_outlet.mjs +6 -6
- package/esm2022/src/index.mjs +2 -2
- package/esm2022/src/navigation_transition.mjs +45 -14
- package/esm2022/src/operators/prioritized_guard_value.mjs +2 -2
- package/esm2022/src/page_title_strategy.mjs +6 -6
- package/esm2022/src/private_export.mjs +2 -1
- package/esm2022/src/provide_router.mjs +33 -1
- package/esm2022/src/route_reuse_strategy.mjs +6 -6
- package/esm2022/src/router.mjs +7 -25
- package/esm2022/src/router_config.mjs +1 -1
- package/esm2022/src/router_config_loader.mjs +51 -43
- package/esm2022/src/router_module.mjs +7 -6
- package/esm2022/src/router_outlet_context.mjs +3 -3
- package/esm2022/src/router_preloader.mjs +9 -9
- package/esm2022/src/router_scroller.mjs +3 -3
- 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 +44 -0
- 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 +4 -4
- package/fesm2022/router.mjs +229 -174
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/testing.mjs +11 -11
- package/fesm2022/upgrade.mjs +1 -1
- package/index.d.ts +62 -27
- package/package.json +5 -5
- package/testing/index.d.ts +1 -1
- 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.5
|
|
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.5", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
429
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", 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.5", 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.5", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1789
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", 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.5", 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.5", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2499
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.5", 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.5", 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.5", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2605
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", 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.5", 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.5", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2688
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.5", 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.5", 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))))
|
|
@@ -4092,10 +4092,10 @@ class TitleStrategy {
|
|
|
4092
4092
|
getResolvedTitleForRoute(snapshot) {
|
|
4093
4093
|
return snapshot.data[RouteTitleKey];
|
|
4094
4094
|
}
|
|
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.
|
|
4095
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4096
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
|
|
4097
4097
|
}
|
|
4098
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4098
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: TitleStrategy, decorators: [{
|
|
4099
4099
|
type: Injectable,
|
|
4100
4100
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
|
|
4101
4101
|
}] });
|
|
@@ -4118,10 +4118,10 @@ class DefaultTitleStrategy extends TitleStrategy {
|
|
|
4118
4118
|
this.title.setTitle(title);
|
|
4119
4119
|
}
|
|
4120
4120
|
}
|
|
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.
|
|
4121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4122
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
|
|
4123
4123
|
}
|
|
4124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
|
|
4125
4125
|
type: Injectable,
|
|
4126
4126
|
args: [{ providedIn: 'root' }]
|
|
4127
4127
|
}], ctorParameters: function () { return [{ type: i1.Title }]; } });
|
|
@@ -4189,33 +4189,8 @@ class RouterConfigLoader {
|
|
|
4189
4189
|
if (this.onLoadStartListener) {
|
|
4190
4190
|
this.onLoadStartListener(route);
|
|
4191
4191
|
}
|
|
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(() => {
|
|
4192
|
+
const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener);
|
|
4193
|
+
const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => {
|
|
4219
4194
|
this.childrenLoaders.delete(route);
|
|
4220
4195
|
}));
|
|
4221
4196
|
// Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much
|
|
@@ -4224,24 +4199,57 @@ class RouterConfigLoader {
|
|
|
4224
4199
|
this.childrenLoaders.set(route, loader);
|
|
4225
4200
|
return loader;
|
|
4226
4201
|
}
|
|
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.3", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4239
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.3", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
|
|
4202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4203
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
|
|
4240
4204
|
}
|
|
4241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterConfigLoader, decorators: [{
|
|
4242
4206
|
type: Injectable,
|
|
4243
4207
|
args: [{ providedIn: 'root' }]
|
|
4244
4208
|
}] });
|
|
4209
|
+
/**
|
|
4210
|
+
* Executes a `route.loadChildren` callback and converts the result to an array of child routes and
|
|
4211
|
+
* an injector if that callback returned a module.
|
|
4212
|
+
*
|
|
4213
|
+
* This function is used for the route discovery during prerendering
|
|
4214
|
+
* in @angular-devkit/build-angular. If there are any updates to the contract here, it will require
|
|
4215
|
+
* an update to the extractor.
|
|
4216
|
+
*/
|
|
4217
|
+
function loadChildren(route, compiler, parentInjector, onLoadEndListener) {
|
|
4218
|
+
return wrapIntoObservable(route.loadChildren())
|
|
4219
|
+
.pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => {
|
|
4220
|
+
if (t instanceof NgModuleFactory || Array.isArray(t)) {
|
|
4221
|
+
return of(t);
|
|
4222
|
+
}
|
|
4223
|
+
else {
|
|
4224
|
+
return from(compiler.compileModuleAsync(t));
|
|
4225
|
+
}
|
|
4226
|
+
}), map((factoryOrRoutes) => {
|
|
4227
|
+
if (onLoadEndListener) {
|
|
4228
|
+
onLoadEndListener(route);
|
|
4229
|
+
}
|
|
4230
|
+
// This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is
|
|
4231
|
+
// no injector associated with lazy loading a `Route` array.
|
|
4232
|
+
let injector;
|
|
4233
|
+
let rawRoutes;
|
|
4234
|
+
let requireStandaloneComponents = false;
|
|
4235
|
+
if (Array.isArray(factoryOrRoutes)) {
|
|
4236
|
+
rawRoutes = factoryOrRoutes;
|
|
4237
|
+
requireStandaloneComponents = true;
|
|
4238
|
+
}
|
|
4239
|
+
else {
|
|
4240
|
+
injector = factoryOrRoutes.create(parentInjector).injector;
|
|
4241
|
+
// When loading a module that doesn't provide `RouterModule.forChild()` preloader
|
|
4242
|
+
// will get stuck in an infinite loop. The child module's Injector will look to
|
|
4243
|
+
// its parent `Injector` when it doesn't find any ROUTES so it will return routes
|
|
4244
|
+
// for it's parent module instead.
|
|
4245
|
+
rawRoutes = injector.get(ROUTES, [], { optional: true, self: true }).flat();
|
|
4246
|
+
}
|
|
4247
|
+
const routes = rawRoutes.map(standardizeConfig);
|
|
4248
|
+
(typeof ngDevMode === 'undefined' || ngDevMode) &&
|
|
4249
|
+
validateConfig(routes, route.path, requireStandaloneComponents);
|
|
4250
|
+
return { routes, injector };
|
|
4251
|
+
}));
|
|
4252
|
+
}
|
|
4245
4253
|
function isWrappedDefaultExport(value) {
|
|
4246
4254
|
// We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be
|
|
4247
4255
|
// dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that
|
|
@@ -4262,10 +4270,10 @@ function maybeUnwrapDefaultExport(input) {
|
|
|
4262
4270
|
* @publicApi
|
|
4263
4271
|
*/
|
|
4264
4272
|
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.
|
|
4273
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4274
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
|
|
4267
4275
|
}
|
|
4268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
|
|
4269
4277
|
type: Injectable,
|
|
4270
4278
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
|
|
4271
4279
|
}] });
|
|
@@ -4282,14 +4290,49 @@ class DefaultUrlHandlingStrategy {
|
|
|
4282
4290
|
merge(newUrlPart, wholeUrl) {
|
|
4283
4291
|
return newUrlPart;
|
|
4284
4292
|
}
|
|
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.
|
|
4293
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4294
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
|
|
4287
4295
|
}
|
|
4288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
|
|
4289
4297
|
type: Injectable,
|
|
4290
4298
|
args: [{ providedIn: 'root' }]
|
|
4291
4299
|
}] });
|
|
4292
4300
|
|
|
4301
|
+
/// <reference types="@types/dom-view-transitions" />
|
|
4302
|
+
const CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition helper' : '');
|
|
4303
|
+
/**
|
|
4304
|
+
* A helper function for using browser view transitions. This function skips the call to
|
|
4305
|
+
* `startViewTransition` if the browser does not support it.
|
|
4306
|
+
*
|
|
4307
|
+
* @returns A Promise that resolves when the view transition callback begins.
|
|
4308
|
+
*/
|
|
4309
|
+
function createViewTransition(injector) {
|
|
4310
|
+
// Create promises outside the Angular zone to avoid causing extra change detections
|
|
4311
|
+
return injector.get(NgZone).runOutsideAngular(() => {
|
|
4312
|
+
const document = injector.get(DOCUMENT);
|
|
4313
|
+
if (!document.startViewTransition) {
|
|
4314
|
+
return Promise.resolve();
|
|
4315
|
+
}
|
|
4316
|
+
let resolveViewTransitionStarted;
|
|
4317
|
+
const viewTransitionStarted = new Promise((resolve) => {
|
|
4318
|
+
resolveViewTransitionStarted = resolve;
|
|
4319
|
+
});
|
|
4320
|
+
document.startViewTransition(() => {
|
|
4321
|
+
resolveViewTransitionStarted();
|
|
4322
|
+
return createRenderPromise(injector);
|
|
4323
|
+
});
|
|
4324
|
+
return viewTransitionStarted;
|
|
4325
|
+
});
|
|
4326
|
+
}
|
|
4327
|
+
/**
|
|
4328
|
+
* Creates a promise that resolves after next render.
|
|
4329
|
+
*/
|
|
4330
|
+
function createRenderPromise(injector) {
|
|
4331
|
+
return new Promise(resolve => {
|
|
4332
|
+
afterNextRender(resolve, { injector });
|
|
4333
|
+
});
|
|
4334
|
+
}
|
|
4335
|
+
|
|
4293
4336
|
class NavigationTransitions {
|
|
4294
4337
|
get hasRequestedNavigation() {
|
|
4295
4338
|
return this.navigationId !== 0;
|
|
@@ -4312,11 +4355,13 @@ class NavigationTransitions {
|
|
|
4312
4355
|
this.environmentInjector = inject(EnvironmentInjector);
|
|
4313
4356
|
this.urlSerializer = inject(UrlSerializer);
|
|
4314
4357
|
this.rootContexts = inject(ChildrenOutletContexts);
|
|
4358
|
+
this.location = inject(Location);
|
|
4315
4359
|
this.inputBindingEnabled = inject(INPUT_BINDER, { optional: true }) !== null;
|
|
4316
4360
|
this.titleStrategy = inject(TitleStrategy);
|
|
4317
4361
|
this.options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
4318
4362
|
this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';
|
|
4319
4363
|
this.urlHandlingStrategy = inject(UrlHandlingStrategy);
|
|
4364
|
+
this.createViewTransition = inject(CREATE_VIEW_TRANSITION, { optional: true });
|
|
4320
4365
|
this.navigationId = 0;
|
|
4321
4366
|
/**
|
|
4322
4367
|
* Hook that enables you to pause navigation after the preactivation phase.
|
|
@@ -4344,7 +4389,6 @@ class NavigationTransitions {
|
|
|
4344
4389
|
id: 0,
|
|
4345
4390
|
currentUrlTree: initialUrlTree,
|
|
4346
4391
|
currentRawUrl: initialUrlTree,
|
|
4347
|
-
currentBrowserUrl: initialUrlTree,
|
|
4348
4392
|
extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree),
|
|
4349
4393
|
urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree),
|
|
4350
4394
|
rawUrl: initialUrlTree,
|
|
@@ -4385,14 +4429,8 @@ class NavigationTransitions {
|
|
|
4385
4429
|
},
|
|
4386
4430
|
};
|
|
4387
4431
|
}), switchMap(t => {
|
|
4388
|
-
const browserUrlTree = t.currentBrowserUrl.toString();
|
|
4389
4432
|
const urlTransition = !router.navigated ||
|
|
4390
|
-
|
|
4391
|
-
// Navigations which succeed or ones which fail and are cleaned up
|
|
4392
|
-
// correctly should result in `browserUrlTree` and `currentUrlTree`
|
|
4393
|
-
// matching. If this is not the case, assume something went wrong and
|
|
4394
|
-
// try processing the URL again.
|
|
4395
|
-
browserUrlTree !== t.currentUrlTree.toString();
|
|
4433
|
+
this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();
|
|
4396
4434
|
const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;
|
|
4397
4435
|
if (!urlTransition && onSameUrlNavigation !== 'reload') {
|
|
4398
4436
|
const reason = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
@@ -4530,7 +4568,14 @@ class NavigationTransitions {
|
|
|
4530
4568
|
};
|
|
4531
4569
|
return combineLatest(loadComponents(t.targetSnapshot.root))
|
|
4532
4570
|
.pipe(defaultIfEmpty(), take(1));
|
|
4533
|
-
}), switchTap(() => this.afterPreactivation()),
|
|
4571
|
+
}), switchTap(() => this.afterPreactivation()), switchMap(() => {
|
|
4572
|
+
const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector);
|
|
4573
|
+
// If view transitions are enabled, block the navigation until the view
|
|
4574
|
+
// transition callback starts. Otherwise, continue immediately.
|
|
4575
|
+
return viewTransitionStarted ?
|
|
4576
|
+
from(viewTransitionStarted).pipe(map(() => overallTransitionState)) :
|
|
4577
|
+
of(overallTransitionState);
|
|
4578
|
+
}), map((t) => {
|
|
4534
4579
|
const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState);
|
|
4535
4580
|
this.currentTransition =
|
|
4536
4581
|
overallTransitionState = { ...t, targetRouterState };
|
|
@@ -4618,10 +4663,37 @@ class NavigationTransitions {
|
|
|
4618
4663
|
this.events.next(navCancel);
|
|
4619
4664
|
t.resolve(false);
|
|
4620
4665
|
}
|
|
4621
|
-
|
|
4622
|
-
|
|
4623
|
-
|
|
4624
|
-
|
|
4666
|
+
/**
|
|
4667
|
+
* @returns Whether we're navigating to somewhere that is not what the Router is
|
|
4668
|
+
* currently set to.
|
|
4669
|
+
*/
|
|
4670
|
+
isUpdatingInternalState() {
|
|
4671
|
+
// TODO(atscott): The serializer should likely be used instead of
|
|
4672
|
+
// `UrlTree.toString()`. Custom serializers are often written to handle
|
|
4673
|
+
// things better than the default one (objects, for example will be
|
|
4674
|
+
// [Object object] with the custom serializer and be "the same" when they
|
|
4675
|
+
// aren't).
|
|
4676
|
+
// (Same for isUpdatedBrowserUrl)
|
|
4677
|
+
return this.currentTransition?.extractedUrl.toString() !==
|
|
4678
|
+
this.currentTransition?.currentUrlTree.toString();
|
|
4679
|
+
}
|
|
4680
|
+
/**
|
|
4681
|
+
* @returns Whether we're updating the browser URL to something new (navigation is going
|
|
4682
|
+
* to somewhere not displayed in the URL bar and we will update the URL
|
|
4683
|
+
* bar if navigation succeeds).
|
|
4684
|
+
*/
|
|
4685
|
+
isUpdatedBrowserUrl() {
|
|
4686
|
+
// The extracted URL is the part of the URL that this application cares about. `extract` may
|
|
4687
|
+
// return only part of the browser URL and that part may have not changed even if some other
|
|
4688
|
+
// portion of the URL did.
|
|
4689
|
+
const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true)));
|
|
4690
|
+
return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
|
|
4691
|
+
!this.currentTransition?.extras.skipLocationChange;
|
|
4692
|
+
}
|
|
4693
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4694
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
|
|
4695
|
+
}
|
|
4696
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NavigationTransitions, decorators: [{
|
|
4625
4697
|
type: Injectable,
|
|
4626
4698
|
args: [{ providedIn: 'root' }]
|
|
4627
4699
|
}], ctorParameters: function () { return []; } });
|
|
@@ -4637,10 +4709,10 @@ function isBrowserTriggeredNavigation(source) {
|
|
|
4637
4709
|
* @publicApi
|
|
4638
4710
|
*/
|
|
4639
4711
|
class RouteReuseStrategy {
|
|
4640
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4641
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4712
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4713
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
|
|
4642
4714
|
}
|
|
4643
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4715
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouteReuseStrategy, decorators: [{
|
|
4644
4716
|
type: Injectable,
|
|
4645
4717
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
|
|
4646
4718
|
}] });
|
|
@@ -4691,10 +4763,10 @@ class BaseRouteReuseStrategy {
|
|
|
4691
4763
|
}
|
|
4692
4764
|
}
|
|
4693
4765
|
class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
|
|
4694
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4695
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4766
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4767
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
|
|
4696
4768
|
}
|
|
4697
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4769
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
|
|
4698
4770
|
type: Injectable,
|
|
4699
4771
|
args: [{ providedIn: 'root' }]
|
|
4700
4772
|
}] });
|
|
@@ -4713,9 +4785,6 @@ class StateManager {
|
|
|
4713
4785
|
* Represents the activated `UrlTree` that the `Router` is configured to handle (through
|
|
4714
4786
|
* `UrlHandlingStrategy`). That is, after we find the route config tree that we're going to
|
|
4715
4787
|
* activate, run guards, and are just about to activate the route, we set the currentUrlTree.
|
|
4716
|
-
*
|
|
4717
|
-
* This should match the `browserUrlTree` when a navigation succeeds. If the
|
|
4718
|
-
* `UrlHandlingStrategy.shouldProcessUrl` is `false`, only the `browserUrlTree` is updated.
|
|
4719
4788
|
* @internal
|
|
4720
4789
|
*/
|
|
4721
4790
|
this.currentUrlTree = new UrlTree();
|
|
@@ -4747,23 +4816,6 @@ class StateManager {
|
|
|
4747
4816
|
*
|
|
4748
4817
|
*/
|
|
4749
4818
|
this.rawUrlTree = this.currentUrlTree;
|
|
4750
|
-
/**
|
|
4751
|
-
* Meant to represent the part of the browser url that the `Router` is set up to handle (via the
|
|
4752
|
-
* `UrlHandlingStrategy`). This value is updated immediately after the browser url is updated (or
|
|
4753
|
-
* the browser url update is skipped via `skipLocationChange`). With that, note that
|
|
4754
|
-
* `browserUrlTree` _may not_ reflect the actual browser URL for two reasons:
|
|
4755
|
-
*
|
|
4756
|
-
* 1. `UrlHandlingStrategy` only handles part of the URL
|
|
4757
|
-
* 2. `skipLocationChange` does not update the browser url.
|
|
4758
|
-
*
|
|
4759
|
-
* So to reiterate, `browserUrlTree` only represents the Router's internal understanding of the
|
|
4760
|
-
* current route, either before guards with `urlUpdateStrategy === 'eager'` or right before
|
|
4761
|
-
* activation with `'deferred'`.
|
|
4762
|
-
*
|
|
4763
|
-
* This should match the `currentUrlTree` when the navigation succeeds.
|
|
4764
|
-
* @internal
|
|
4765
|
-
*/
|
|
4766
|
-
this.browserUrlTree = this.currentUrlTree;
|
|
4767
4819
|
/**
|
|
4768
4820
|
* The id of the currently active page in the router.
|
|
4769
4821
|
* Updated to the transition's target id on a successful navigation.
|
|
@@ -4791,7 +4843,6 @@ class StateManager {
|
|
|
4791
4843
|
createStateMemento() {
|
|
4792
4844
|
return {
|
|
4793
4845
|
rawUrlTree: this.rawUrlTree,
|
|
4794
|
-
browserUrlTree: this.browserUrlTree,
|
|
4795
4846
|
currentUrlTree: this.currentUrlTree,
|
|
4796
4847
|
routerState: this.routerState,
|
|
4797
4848
|
};
|
|
@@ -4799,11 +4850,6 @@ class StateManager {
|
|
|
4799
4850
|
handleNavigationEvent(e, currentTransition) {
|
|
4800
4851
|
if (e instanceof NavigationStart) {
|
|
4801
4852
|
this.stateMemento = this.createStateMemento();
|
|
4802
|
-
// If the source of the navigation is from a browser event, the URL is
|
|
4803
|
-
// already updated. We already need to sync the internal state.
|
|
4804
|
-
if (isBrowserTriggeredNavigation(currentTransition.trigger)) {
|
|
4805
|
-
this.browserUrlTree = currentTransition.extractedUrl;
|
|
4806
|
-
}
|
|
4807
4853
|
}
|
|
4808
4854
|
else if (e instanceof NavigationSkipped) {
|
|
4809
4855
|
this.rawUrlTree = currentTransition.initialUrl;
|
|
@@ -4814,7 +4860,6 @@ class StateManager {
|
|
|
4814
4860
|
const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);
|
|
4815
4861
|
this.setBrowserUrl(rawUrl, currentTransition);
|
|
4816
4862
|
}
|
|
4817
|
-
this.browserUrlTree = currentTransition.finalUrl;
|
|
4818
4863
|
}
|
|
4819
4864
|
}
|
|
4820
4865
|
else if (e instanceof BeforeActivateRoutes) {
|
|
@@ -4826,7 +4871,6 @@ class StateManager {
|
|
|
4826
4871
|
if (!currentTransition.extras.skipLocationChange) {
|
|
4827
4872
|
this.setBrowserUrl(this.rawUrlTree, currentTransition);
|
|
4828
4873
|
}
|
|
4829
|
-
this.browserUrlTree = currentTransition.finalUrl;
|
|
4830
4874
|
}
|
|
4831
4875
|
}
|
|
4832
4876
|
else if (e instanceof NavigationCancel &&
|
|
@@ -4878,9 +4922,6 @@ class StateManager {
|
|
|
4878
4922
|
// finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).
|
|
4879
4923
|
// We still need to reset the router state back to what it was when the navigation started.
|
|
4880
4924
|
this.resetState(navigation);
|
|
4881
|
-
// TODO(atscott): resetting the `browserUrlTree` should really be done in `resetState`.
|
|
4882
|
-
// Investigate if this can be done by running TGP.
|
|
4883
|
-
this.browserUrlTree = this.stateMemento.browserUrlTree;
|
|
4884
4925
|
this.resetUrlToCurrentUrlTree();
|
|
4885
4926
|
}
|
|
4886
4927
|
else {
|
|
@@ -4919,10 +4960,10 @@ class StateManager {
|
|
|
4919
4960
|
}
|
|
4920
4961
|
return { navigationId };
|
|
4921
4962
|
}
|
|
4922
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4923
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4963
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4964
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: StateManager, providedIn: 'root' }); }
|
|
4924
4965
|
}
|
|
4925
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
4966
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: StateManager, decorators: [{
|
|
4926
4967
|
type: Injectable,
|
|
4927
4968
|
args: [{ providedIn: 'root' }]
|
|
4928
4969
|
}] });
|
|
@@ -4963,9 +5004,6 @@ function afterNextNavigation(router, action) {
|
|
|
4963
5004
|
function defaultErrorHandler(error) {
|
|
4964
5005
|
throw error;
|
|
4965
5006
|
}
|
|
4966
|
-
function defaultMalformedUriErrorHandler(error, urlSerializer, url) {
|
|
4967
|
-
return urlSerializer.parse('/');
|
|
4968
|
-
}
|
|
4969
5007
|
/**
|
|
4970
5008
|
* The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`
|
|
4971
5009
|
* (exact = true).
|
|
@@ -5005,9 +5043,6 @@ class Router {
|
|
|
5005
5043
|
get rawUrlTree() {
|
|
5006
5044
|
return this.stateManager.rawUrlTree;
|
|
5007
5045
|
}
|
|
5008
|
-
get browserUrlTree() {
|
|
5009
|
-
return this.stateManager.browserUrlTree;
|
|
5010
|
-
}
|
|
5011
5046
|
/**
|
|
5012
5047
|
* An event stream for routing events.
|
|
5013
5048
|
*/
|
|
@@ -5050,15 +5085,6 @@ class Router {
|
|
|
5050
5085
|
* @see {@link withNavigationErrorHandler}
|
|
5051
5086
|
*/
|
|
5052
5087
|
this.errorHandler = this.options.errorHandler || defaultErrorHandler;
|
|
5053
|
-
/**
|
|
5054
|
-
* A handler for errors thrown by `Router.parseUrl(url)`
|
|
5055
|
-
* when `url` contains an invalid character.
|
|
5056
|
-
* The most common case is a `%` sign
|
|
5057
|
-
* that's not encoded and is not part of a percent encoded sequence.
|
|
5058
|
-
*
|
|
5059
|
-
* @see {@link RouterModule}
|
|
5060
|
-
*/
|
|
5061
|
-
this.malformedUriErrorHandler = this.options.malformedUriErrorHandler || defaultMalformedUriErrorHandler;
|
|
5062
5088
|
/**
|
|
5063
5089
|
* True if at least one navigation event has occurred,
|
|
5064
5090
|
* false otherwise.
|
|
@@ -5436,14 +5462,12 @@ class Router {
|
|
|
5436
5462
|
}
|
|
5437
5463
|
/** Parses a string into a `UrlTree` */
|
|
5438
5464
|
parseUrl(url) {
|
|
5439
|
-
let urlTree;
|
|
5440
5465
|
try {
|
|
5441
|
-
|
|
5466
|
+
return this.urlSerializer.parse(url);
|
|
5442
5467
|
}
|
|
5443
|
-
catch
|
|
5444
|
-
|
|
5468
|
+
catch {
|
|
5469
|
+
return this.urlSerializer.parse('/');
|
|
5445
5470
|
}
|
|
5446
|
-
return urlTree;
|
|
5447
5471
|
}
|
|
5448
5472
|
isActive(url, matchOptions) {
|
|
5449
5473
|
let options;
|
|
@@ -5501,7 +5525,6 @@ class Router {
|
|
|
5501
5525
|
restoredState,
|
|
5502
5526
|
currentUrlTree: this.currentUrlTree,
|
|
5503
5527
|
currentRawUrl: this.currentUrlTree,
|
|
5504
|
-
currentBrowserUrl: this.browserUrlTree,
|
|
5505
5528
|
rawUrl,
|
|
5506
5529
|
extras,
|
|
5507
5530
|
resolve,
|
|
@@ -5516,10 +5539,10 @@ class Router {
|
|
|
5516
5539
|
return Promise.reject(e);
|
|
5517
5540
|
});
|
|
5518
5541
|
}
|
|
5519
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5520
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5542
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5543
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: Router, providedIn: 'root' }); }
|
|
5521
5544
|
}
|
|
5522
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: Router, decorators: [{
|
|
5523
5546
|
type: Injectable,
|
|
5524
5547
|
args: [{ providedIn: 'root' }]
|
|
5525
5548
|
}], ctorParameters: function () { return []; } });
|
|
@@ -5790,10 +5813,10 @@ class RouterLink {
|
|
|
5790
5813
|
preserveFragment: this.preserveFragment,
|
|
5791
5814
|
});
|
|
5792
5815
|
}
|
|
5793
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5794
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-next.
|
|
5816
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", 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 }); }
|
|
5817
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-next.5", 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 }); }
|
|
5795
5818
|
}
|
|
5796
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
5819
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterLink, decorators: [{
|
|
5797
5820
|
type: Directive,
|
|
5798
5821
|
args: [{
|
|
5799
5822
|
selector: '[routerLink]',
|
|
@@ -6016,10 +6039,10 @@ class RouterLinkActive {
|
|
|
6016
6039
|
const isActiveCheckFn = this.isLinkActive(this.router);
|
|
6017
6040
|
return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);
|
|
6018
6041
|
}
|
|
6019
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6020
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.
|
|
6042
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6043
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.5", 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 }); }
|
|
6021
6044
|
}
|
|
6022
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6045
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterLinkActive, decorators: [{
|
|
6023
6046
|
type: Directive,
|
|
6024
6047
|
args: [{
|
|
6025
6048
|
selector: '[routerLinkActive]',
|
|
@@ -6071,10 +6094,10 @@ class PreloadAllModules {
|
|
|
6071
6094
|
preload(route, fn) {
|
|
6072
6095
|
return fn().pipe(catchError(() => of(null)));
|
|
6073
6096
|
}
|
|
6074
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6075
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6097
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6098
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
|
|
6076
6099
|
}
|
|
6077
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: PreloadAllModules, decorators: [{
|
|
6078
6101
|
type: Injectable,
|
|
6079
6102
|
args: [{ providedIn: 'root' }]
|
|
6080
6103
|
}] });
|
|
@@ -6091,10 +6114,10 @@ class NoPreloading {
|
|
|
6091
6114
|
preload(route, fn) {
|
|
6092
6115
|
return of(null);
|
|
6093
6116
|
}
|
|
6094
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6095
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6118
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
|
|
6096
6119
|
}
|
|
6097
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NoPreloading, decorators: [{
|
|
6098
6121
|
type: Injectable,
|
|
6099
6122
|
args: [{ providedIn: 'root' }]
|
|
6100
6123
|
}] });
|
|
@@ -6187,10 +6210,10 @@ class RouterPreloader {
|
|
|
6187
6210
|
}
|
|
6188
6211
|
});
|
|
6189
6212
|
}
|
|
6190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6191
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6213
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6214
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
|
|
6192
6215
|
}
|
|
6193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterPreloader, decorators: [{
|
|
6194
6217
|
type: Injectable,
|
|
6195
6218
|
args: [{ providedIn: 'root' }]
|
|
6196
6219
|
}], ctorParameters: function () { return [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }]; } });
|
|
@@ -6283,10 +6306,10 @@ class RouterScroller {
|
|
|
6283
6306
|
this.routerEventsSubscription?.unsubscribe();
|
|
6284
6307
|
this.scrollEventsSubscription?.unsubscribe();
|
|
6285
6308
|
}
|
|
6286
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6287
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6309
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6310
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterScroller }); }
|
|
6288
6311
|
}
|
|
6289
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6312
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterScroller, decorators: [{
|
|
6290
6313
|
type: Injectable
|
|
6291
6314
|
}], ctorParameters: function () { return [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }]; } });
|
|
6292
6315
|
|
|
@@ -6776,6 +6799,37 @@ function withComponentInputBinding() {
|
|
|
6776
6799
|
];
|
|
6777
6800
|
return routerFeature(8 /* RouterFeatureKind.ComponentInputBindingFeature */, providers);
|
|
6778
6801
|
}
|
|
6802
|
+
/**
|
|
6803
|
+
* Enables view transitions in the Router by running the route activation and deactivation inside of
|
|
6804
|
+
* `document.startViewTransition`.
|
|
6805
|
+
*
|
|
6806
|
+
* Note: The View Transitions API is not available in all browsers. If the browser does not support
|
|
6807
|
+
* view transitions, the Router will not attempt to start a view transition and continue processing
|
|
6808
|
+
* the navigation as usual.
|
|
6809
|
+
*
|
|
6810
|
+
* @usageNotes
|
|
6811
|
+
*
|
|
6812
|
+
* Basic example of how you can enable the feature:
|
|
6813
|
+
* ```
|
|
6814
|
+
* const appRoutes: Routes = [];
|
|
6815
|
+
* bootstrapApplication(AppComponent,
|
|
6816
|
+
* {
|
|
6817
|
+
* providers: [
|
|
6818
|
+
* provideRouter(appRoutes, withViewTransitions())
|
|
6819
|
+
* ]
|
|
6820
|
+
* }
|
|
6821
|
+
* );
|
|
6822
|
+
* ```
|
|
6823
|
+
*
|
|
6824
|
+
* @returns A set of providers for use with `provideRouter`.
|
|
6825
|
+
* @see https://developer.chrome.com/docs/web-platform/view-transitions/
|
|
6826
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API
|
|
6827
|
+
* @experimental
|
|
6828
|
+
*/
|
|
6829
|
+
function withViewTransitions() {
|
|
6830
|
+
const providers = [{ provide: CREATE_VIEW_TRANSITION, useValue: createViewTransition }];
|
|
6831
|
+
return routerFeature(9 /* RouterFeatureKind.ViewTransitionsFeature */, providers);
|
|
6832
|
+
}
|
|
6779
6833
|
|
|
6780
6834
|
/**
|
|
6781
6835
|
* The directives defined in the `RouterModule`.
|
|
@@ -6867,6 +6921,7 @@ class RouterModule {
|
|
|
6867
6921
|
{ provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },
|
|
6868
6922
|
config?.initialNavigation ? provideInitialNavigation(config) : [],
|
|
6869
6923
|
config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [],
|
|
6924
|
+
config?.enableViewTransitions ? withViewTransitions().ɵproviders : [],
|
|
6870
6925
|
provideRouterInitializer(),
|
|
6871
6926
|
],
|
|
6872
6927
|
};
|
|
@@ -6893,11 +6948,11 @@ class RouterModule {
|
|
|
6893
6948
|
providers: [{ provide: ROUTES, multi: true, useValue: routes }],
|
|
6894
6949
|
};
|
|
6895
6950
|
}
|
|
6896
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6897
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.
|
|
6898
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6951
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6952
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
|
|
6953
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule }); }
|
|
6899
6954
|
}
|
|
6900
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.
|
|
6955
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule, decorators: [{
|
|
6901
6956
|
type: NgModule,
|
|
6902
6957
|
args: [{
|
|
6903
6958
|
imports: ROUTER_DIRECTIVES,
|
|
@@ -7042,7 +7097,7 @@ function mapToResolve(provider) {
|
|
|
7042
7097
|
/**
|
|
7043
7098
|
* @publicApi
|
|
7044
7099
|
*/
|
|
7045
|
-
const VERSION = new Version('17.0.0-next.
|
|
7100
|
+
const VERSION = new Version('17.0.0-next.5');
|
|
7046
7101
|
|
|
7047
7102
|
/**
|
|
7048
7103
|
* @module
|
|
@@ -7057,5 +7112,5 @@ const VERSION = new Version('17.0.0-next.3');
|
|
|
7057
7112
|
* Generated bundle index. Do not edit.
|
|
7058
7113
|
*/
|
|
7059
7114
|
|
|
7060
|
-
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, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation };
|
|
7115
|
+
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 };
|
|
7061
7116
|
//# sourceMappingURL=router.mjs.map
|