@angular/router 16.0.0-next.5 → 16.0.0-next.7
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/create_url_tree.mjs +6 -4
- 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 +82 -5
- package/esm2022/src/index.mjs +2 -2
- package/esm2022/src/navigation_transition.mjs +11 -5
- package/esm2022/src/operators/activate_routes.mjs +16 -4
- package/esm2022/src/operators/check_guards.mjs +1 -1
- package/esm2022/src/page_title_strategy.mjs +6 -6
- package/esm2022/src/provide_router.mjs +30 -1
- package/esm2022/src/route_reuse_strategy.mjs +6 -6
- package/esm2022/src/router.mjs +12 -7
- package/esm2022/src/router_config.mjs +1 -1
- package/esm2022/src/router_config_loader.mjs +3 -3
- 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/url_handling_strategy.mjs +6 -6
- package/esm2022/src/url_tree.mjs +4 -4
- package/esm2022/src/utils/type_guards.mjs +1 -1
- 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 -7
- package/fesm2022/router.mjs +338 -212
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/testing.mjs +13 -13
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +1 -1
- package/index.d.ts +88 -4
- package/package.json +4 -4
- package/testing/index.d.ts +3 -3
- package/upgrade/index.d.ts +1 -1
package/fesm2022/router.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v16.0.0-next.
|
|
2
|
+
* @license Angular v16.0.0-next.7
|
|
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, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable,
|
|
9
|
-
import { isObservable, from, of, BehaviorSubject,
|
|
8
|
+
import { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, Compiler, InjectFlags, NgModuleFactory, ɵConsole, ɵInitialRenderPendingTasks, NgZone, ɵcoerceToBoolean, ɵɵsanitizeUrlOrResourceUrl, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, APP_INITIALIZER, NgProbeToken, SkipSelf, NgModule, Inject, Version } from '@angular/core';
|
|
9
|
+
import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject } from 'rxjs';
|
|
10
10
|
import * as i3 from '@angular/common';
|
|
11
11
|
import { 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, mergeAll } from 'rxjs/operators';
|
|
@@ -419,10 +419,10 @@ function mapChildrenIntoArray(segment, fn) {
|
|
|
419
419
|
* @publicApi
|
|
420
420
|
*/
|
|
421
421
|
class UrlSerializer {
|
|
422
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
423
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
422
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
423
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
|
|
424
424
|
}
|
|
425
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: UrlSerializer, decorators: [{
|
|
426
426
|
type: Injectable,
|
|
427
427
|
args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
|
|
428
428
|
}] });
|
|
@@ -1076,8 +1076,9 @@ function updateSegmentGroupChildren(segmentGroup, startIndex, commands) {
|
|
|
1076
1076
|
const outlets = getOutlets(commands);
|
|
1077
1077
|
const children = {};
|
|
1078
1078
|
// If the set of commands does not apply anything to the primary outlet and the child segment is
|
|
1079
|
-
// an empty path primary segment on its own, we want to
|
|
1080
|
-
//
|
|
1079
|
+
// an empty path primary segment on its own, we want to apply the commands to the empty child
|
|
1080
|
+
// path rather than here. The outcome is that the empty primary child is effectively removed
|
|
1081
|
+
// from the final output UrlTree. Imagine the following config:
|
|
1081
1082
|
//
|
|
1082
1083
|
// {path: '', children: [{path: '**', outlet: 'popup'}]}.
|
|
1083
1084
|
//
|
|
@@ -1098,7 +1099,8 @@ function updateSegmentGroupChildren(segmentGroup, startIndex, commands) {
|
|
|
1098
1099
|
if (!outlets[PRIMARY_OUTLET] && segmentGroup.children[PRIMARY_OUTLET] &&
|
|
1099
1100
|
segmentGroup.numberOfChildren === 1 &&
|
|
1100
1101
|
segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) {
|
|
1101
|
-
|
|
1102
|
+
const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands);
|
|
1103
|
+
return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children);
|
|
1102
1104
|
}
|
|
1103
1105
|
Object.entries(outlets).forEach(([outlet, commands]) => {
|
|
1104
1106
|
if (typeof commands === 'string') {
|
|
@@ -1700,6 +1702,79 @@ function stringifyEvent(routerEvent) {
|
|
|
1700
1702
|
}
|
|
1701
1703
|
}
|
|
1702
1704
|
|
|
1705
|
+
/**
|
|
1706
|
+
* Store contextual information about a `RouterOutlet`
|
|
1707
|
+
*
|
|
1708
|
+
* @publicApi
|
|
1709
|
+
*/
|
|
1710
|
+
class OutletContext {
|
|
1711
|
+
constructor() {
|
|
1712
|
+
this.outlet = null;
|
|
1713
|
+
this.route = null;
|
|
1714
|
+
this.injector = null;
|
|
1715
|
+
this.children = new ChildrenOutletContexts();
|
|
1716
|
+
this.attachRef = null;
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
/**
|
|
1720
|
+
* Store contextual information about the children (= nested) `RouterOutlet`
|
|
1721
|
+
*
|
|
1722
|
+
* @publicApi
|
|
1723
|
+
*/
|
|
1724
|
+
class ChildrenOutletContexts {
|
|
1725
|
+
constructor() {
|
|
1726
|
+
// contexts for child outlets, by name.
|
|
1727
|
+
this.contexts = new Map();
|
|
1728
|
+
}
|
|
1729
|
+
/** Called when a `RouterOutlet` directive is instantiated */
|
|
1730
|
+
onChildOutletCreated(childName, outlet) {
|
|
1731
|
+
const context = this.getOrCreateContext(childName);
|
|
1732
|
+
context.outlet = outlet;
|
|
1733
|
+
this.contexts.set(childName, context);
|
|
1734
|
+
}
|
|
1735
|
+
/**
|
|
1736
|
+
* Called when a `RouterOutlet` directive is destroyed.
|
|
1737
|
+
* We need to keep the context as the outlet could be destroyed inside a NgIf and might be
|
|
1738
|
+
* re-created later.
|
|
1739
|
+
*/
|
|
1740
|
+
onChildOutletDestroyed(childName) {
|
|
1741
|
+
const context = this.getContext(childName);
|
|
1742
|
+
if (context) {
|
|
1743
|
+
context.outlet = null;
|
|
1744
|
+
context.attachRef = null;
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1747
|
+
/**
|
|
1748
|
+
* Called when the corresponding route is deactivated during navigation.
|
|
1749
|
+
* Because the component get destroyed, all children outlet are destroyed.
|
|
1750
|
+
*/
|
|
1751
|
+
onOutletDeactivated() {
|
|
1752
|
+
const contexts = this.contexts;
|
|
1753
|
+
this.contexts = new Map();
|
|
1754
|
+
return contexts;
|
|
1755
|
+
}
|
|
1756
|
+
onOutletReAttached(contexts) {
|
|
1757
|
+
this.contexts = contexts;
|
|
1758
|
+
}
|
|
1759
|
+
getOrCreateContext(childName) {
|
|
1760
|
+
let context = this.getContext(childName);
|
|
1761
|
+
if (!context) {
|
|
1762
|
+
context = new OutletContext();
|
|
1763
|
+
this.contexts.set(childName, context);
|
|
1764
|
+
}
|
|
1765
|
+
return context;
|
|
1766
|
+
}
|
|
1767
|
+
getContext(childName) {
|
|
1768
|
+
return this.contexts.get(childName) || null;
|
|
1769
|
+
}
|
|
1770
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1771
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
|
|
1772
|
+
}
|
|
1773
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
|
|
1774
|
+
type: Injectable,
|
|
1775
|
+
args: [{ providedIn: 'root' }]
|
|
1776
|
+
}] });
|
|
1777
|
+
|
|
1703
1778
|
class Tree {
|
|
1704
1779
|
constructor(root) {
|
|
1705
1780
|
this._root = root;
|
|
@@ -2182,145 +2257,6 @@ function equalParamsAndUrlSegments(a, b) {
|
|
|
2182
2257
|
(!a.parent || equalParamsAndUrlSegments(a.parent, b.parent));
|
|
2183
2258
|
}
|
|
2184
2259
|
|
|
2185
|
-
function createRouterState(routeReuseStrategy, curr, prevState) {
|
|
2186
|
-
const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);
|
|
2187
|
-
return new RouterState(root, curr);
|
|
2188
|
-
}
|
|
2189
|
-
function createNode(routeReuseStrategy, curr, prevState) {
|
|
2190
|
-
// reuse an activated route that is currently displayed on the screen
|
|
2191
|
-
if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {
|
|
2192
|
-
const value = prevState.value;
|
|
2193
|
-
value._futureSnapshot = curr.value;
|
|
2194
|
-
const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);
|
|
2195
|
-
return new TreeNode(value, children);
|
|
2196
|
-
}
|
|
2197
|
-
else {
|
|
2198
|
-
if (routeReuseStrategy.shouldAttach(curr.value)) {
|
|
2199
|
-
// retrieve an activated route that is used to be displayed, but is not currently displayed
|
|
2200
|
-
const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);
|
|
2201
|
-
if (detachedRouteHandle !== null) {
|
|
2202
|
-
const tree = detachedRouteHandle.route;
|
|
2203
|
-
tree.value._futureSnapshot = curr.value;
|
|
2204
|
-
tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));
|
|
2205
|
-
return tree;
|
|
2206
|
-
}
|
|
2207
|
-
}
|
|
2208
|
-
const value = createActivatedRoute(curr.value);
|
|
2209
|
-
const children = curr.children.map(c => createNode(routeReuseStrategy, c));
|
|
2210
|
-
return new TreeNode(value, children);
|
|
2211
|
-
}
|
|
2212
|
-
}
|
|
2213
|
-
function createOrReuseChildren(routeReuseStrategy, curr, prevState) {
|
|
2214
|
-
return curr.children.map(child => {
|
|
2215
|
-
for (const p of prevState.children) {
|
|
2216
|
-
if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {
|
|
2217
|
-
return createNode(routeReuseStrategy, child, p);
|
|
2218
|
-
}
|
|
2219
|
-
}
|
|
2220
|
-
return createNode(routeReuseStrategy, child);
|
|
2221
|
-
});
|
|
2222
|
-
}
|
|
2223
|
-
function createActivatedRoute(c) {
|
|
2224
|
-
return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);
|
|
2225
|
-
}
|
|
2226
|
-
|
|
2227
|
-
const NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';
|
|
2228
|
-
function redirectingNavigationError(urlSerializer, redirect) {
|
|
2229
|
-
const { redirectTo, navigationBehaviorOptions } = isUrlTree(redirect) ? { redirectTo: redirect, navigationBehaviorOptions: undefined } : redirect;
|
|
2230
|
-
const error = navigationCancelingError(ngDevMode && `Redirecting to "${urlSerializer.serialize(redirectTo)}"`, 0 /* NavigationCancellationCode.Redirect */, redirect);
|
|
2231
|
-
error.url = redirectTo;
|
|
2232
|
-
error.navigationBehaviorOptions = navigationBehaviorOptions;
|
|
2233
|
-
return error;
|
|
2234
|
-
}
|
|
2235
|
-
function navigationCancelingError(message, code, redirectUrl) {
|
|
2236
|
-
const error = new Error('NavigationCancelingError: ' + (message || ''));
|
|
2237
|
-
error[NAVIGATION_CANCELING_ERROR] = true;
|
|
2238
|
-
error.cancellationCode = code;
|
|
2239
|
-
if (redirectUrl) {
|
|
2240
|
-
error.url = redirectUrl;
|
|
2241
|
-
}
|
|
2242
|
-
return error;
|
|
2243
|
-
}
|
|
2244
|
-
function isRedirectingNavigationCancelingError$1(error) {
|
|
2245
|
-
return isNavigationCancelingError$1(error) && isUrlTree(error.url);
|
|
2246
|
-
}
|
|
2247
|
-
function isNavigationCancelingError$1(error) {
|
|
2248
|
-
return error && error[NAVIGATION_CANCELING_ERROR];
|
|
2249
|
-
}
|
|
2250
|
-
|
|
2251
|
-
/**
|
|
2252
|
-
* Store contextual information about a `RouterOutlet`
|
|
2253
|
-
*
|
|
2254
|
-
* @publicApi
|
|
2255
|
-
*/
|
|
2256
|
-
class OutletContext {
|
|
2257
|
-
constructor() {
|
|
2258
|
-
this.outlet = null;
|
|
2259
|
-
this.route = null;
|
|
2260
|
-
this.injector = null;
|
|
2261
|
-
this.children = new ChildrenOutletContexts();
|
|
2262
|
-
this.attachRef = null;
|
|
2263
|
-
}
|
|
2264
|
-
}
|
|
2265
|
-
/**
|
|
2266
|
-
* Store contextual information about the children (= nested) `RouterOutlet`
|
|
2267
|
-
*
|
|
2268
|
-
* @publicApi
|
|
2269
|
-
*/
|
|
2270
|
-
class ChildrenOutletContexts {
|
|
2271
|
-
constructor() {
|
|
2272
|
-
// contexts for child outlets, by name.
|
|
2273
|
-
this.contexts = new Map();
|
|
2274
|
-
}
|
|
2275
|
-
/** Called when a `RouterOutlet` directive is instantiated */
|
|
2276
|
-
onChildOutletCreated(childName, outlet) {
|
|
2277
|
-
const context = this.getOrCreateContext(childName);
|
|
2278
|
-
context.outlet = outlet;
|
|
2279
|
-
this.contexts.set(childName, context);
|
|
2280
|
-
}
|
|
2281
|
-
/**
|
|
2282
|
-
* Called when a `RouterOutlet` directive is destroyed.
|
|
2283
|
-
* We need to keep the context as the outlet could be destroyed inside a NgIf and might be
|
|
2284
|
-
* re-created later.
|
|
2285
|
-
*/
|
|
2286
|
-
onChildOutletDestroyed(childName) {
|
|
2287
|
-
const context = this.getContext(childName);
|
|
2288
|
-
if (context) {
|
|
2289
|
-
context.outlet = null;
|
|
2290
|
-
context.attachRef = null;
|
|
2291
|
-
}
|
|
2292
|
-
}
|
|
2293
|
-
/**
|
|
2294
|
-
* Called when the corresponding route is deactivated during navigation.
|
|
2295
|
-
* Because the component get destroyed, all children outlet are destroyed.
|
|
2296
|
-
*/
|
|
2297
|
-
onOutletDeactivated() {
|
|
2298
|
-
const contexts = this.contexts;
|
|
2299
|
-
this.contexts = new Map();
|
|
2300
|
-
return contexts;
|
|
2301
|
-
}
|
|
2302
|
-
onOutletReAttached(contexts) {
|
|
2303
|
-
this.contexts = contexts;
|
|
2304
|
-
}
|
|
2305
|
-
getOrCreateContext(childName) {
|
|
2306
|
-
let context = this.getContext(childName);
|
|
2307
|
-
if (!context) {
|
|
2308
|
-
context = new OutletContext();
|
|
2309
|
-
this.contexts.set(childName, context);
|
|
2310
|
-
}
|
|
2311
|
-
return context;
|
|
2312
|
-
}
|
|
2313
|
-
getContext(childName) {
|
|
2314
|
-
return this.contexts.get(childName) || null;
|
|
2315
|
-
}
|
|
2316
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2317
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
|
|
2318
|
-
}
|
|
2319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
|
|
2320
|
-
type: Injectable,
|
|
2321
|
-
args: [{ providedIn: 'root' }]
|
|
2322
|
-
}] });
|
|
2323
|
-
|
|
2324
2260
|
/**
|
|
2325
2261
|
* @description
|
|
2326
2262
|
*
|
|
@@ -2398,6 +2334,13 @@ class RouterOutlet {
|
|
|
2398
2334
|
this.location = inject(ViewContainerRef);
|
|
2399
2335
|
this.changeDetector = inject(ChangeDetectorRef);
|
|
2400
2336
|
this.environmentInjector = inject(EnvironmentInjector);
|
|
2337
|
+
this.inputBinder = inject(INPUT_BINDER, { optional: true });
|
|
2338
|
+
/** @nodoc */
|
|
2339
|
+
this.supportsBindingToComponentInputs = true;
|
|
2340
|
+
}
|
|
2341
|
+
/** @internal */
|
|
2342
|
+
get activatedComponentRef() {
|
|
2343
|
+
return this.activated;
|
|
2401
2344
|
}
|
|
2402
2345
|
/** @nodoc */
|
|
2403
2346
|
ngOnChanges(changes) {
|
|
@@ -2423,6 +2366,7 @@ class RouterOutlet {
|
|
|
2423
2366
|
if (this.isTrackedInParentContexts(this.name)) {
|
|
2424
2367
|
this.parentContexts.onChildOutletDestroyed(this.name);
|
|
2425
2368
|
}
|
|
2369
|
+
this.inputBinder?.unsubscribeFromRouteData(this);
|
|
2426
2370
|
}
|
|
2427
2371
|
isTrackedInParentContexts(outletName) {
|
|
2428
2372
|
return this.parentContexts.getContext(outletName)?.outlet === this;
|
|
@@ -2493,6 +2437,7 @@ class RouterOutlet {
|
|
|
2493
2437
|
this.activated = ref;
|
|
2494
2438
|
this._activatedRoute = activatedRoute;
|
|
2495
2439
|
this.location.insert(ref.hostView);
|
|
2440
|
+
this.inputBinder?.bindActivatedRouteToOutletComponent(this);
|
|
2496
2441
|
this.attachEvents.emit(ref.instance);
|
|
2497
2442
|
}
|
|
2498
2443
|
deactivate() {
|
|
@@ -2523,12 +2468,13 @@ class RouterOutlet {
|
|
|
2523
2468
|
// Calling `markForCheck` to make sure we will run the change detection when the
|
|
2524
2469
|
// `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.
|
|
2525
2470
|
this.changeDetector.markForCheck();
|
|
2471
|
+
this.inputBinder?.bindActivatedRouteToOutletComponent(this);
|
|
2526
2472
|
this.activateEvents.emit(this.activated.instance);
|
|
2527
2473
|
}
|
|
2528
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
2529
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.
|
|
2474
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2475
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.7", 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 }); }
|
|
2530
2476
|
}
|
|
2531
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
2477
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterOutlet, decorators: [{
|
|
2532
2478
|
type: Directive,
|
|
2533
2479
|
args: [{
|
|
2534
2480
|
selector: 'router-outlet',
|
|
@@ -2566,6 +2512,136 @@ class OutletInjector {
|
|
|
2566
2512
|
return this.parent.get(token, notFoundValue);
|
|
2567
2513
|
}
|
|
2568
2514
|
}
|
|
2515
|
+
const INPUT_BINDER = new InjectionToken('');
|
|
2516
|
+
/**
|
|
2517
|
+
* Injectable used as a tree-shakable provider for opting in to binding router data to component
|
|
2518
|
+
* inputs.
|
|
2519
|
+
*
|
|
2520
|
+
* The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or
|
|
2521
|
+
* activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,
|
|
2522
|
+
* queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.
|
|
2523
|
+
* Importantly, when an input does not have an item in the route data with a matching key, this
|
|
2524
|
+
* input is set to `undefined`. If it were not done this way, the previous information would be
|
|
2525
|
+
* retained if the data got removed from the route (i.e. if a query parameter is removed).
|
|
2526
|
+
*
|
|
2527
|
+
* The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that
|
|
2528
|
+
* the subscriptions are cleaned up.
|
|
2529
|
+
*/
|
|
2530
|
+
class RoutedComponentInputBinder {
|
|
2531
|
+
constructor() {
|
|
2532
|
+
this.outletDataSubscriptions = new Map;
|
|
2533
|
+
}
|
|
2534
|
+
bindActivatedRouteToOutletComponent(outlet) {
|
|
2535
|
+
this.unsubscribeFromRouteData(outlet);
|
|
2536
|
+
this.subscribeToRouteData(outlet);
|
|
2537
|
+
}
|
|
2538
|
+
unsubscribeFromRouteData(outlet) {
|
|
2539
|
+
this.outletDataSubscriptions.get(outlet)?.unsubscribe();
|
|
2540
|
+
this.outletDataSubscriptions.delete(outlet);
|
|
2541
|
+
}
|
|
2542
|
+
subscribeToRouteData(outlet) {
|
|
2543
|
+
const { activatedRoute } = outlet;
|
|
2544
|
+
const dataSubscription = combineLatest([
|
|
2545
|
+
activatedRoute.queryParams,
|
|
2546
|
+
activatedRoute.params,
|
|
2547
|
+
activatedRoute.data,
|
|
2548
|
+
])
|
|
2549
|
+
.pipe(switchMap(([queryParams, params, data]) => {
|
|
2550
|
+
// Promise.resolve is used to avoid synchronously writing the wrong data when two of
|
|
2551
|
+
// the Observables in the `combineLatest` stream emit one after another.
|
|
2552
|
+
return Promise.resolve({ ...queryParams, ...params, ...data });
|
|
2553
|
+
}))
|
|
2554
|
+
.subscribe(data => {
|
|
2555
|
+
// Outlet may have been deactivated or changed names to be associated with a different
|
|
2556
|
+
// route
|
|
2557
|
+
if (!outlet.isActivated || !outlet.activatedComponentRef ||
|
|
2558
|
+
outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) {
|
|
2559
|
+
this.unsubscribeFromRouteData(outlet);
|
|
2560
|
+
return;
|
|
2561
|
+
}
|
|
2562
|
+
const mirror = reflectComponentType(activatedRoute.component);
|
|
2563
|
+
if (!mirror) {
|
|
2564
|
+
this.unsubscribeFromRouteData(outlet);
|
|
2565
|
+
return;
|
|
2566
|
+
}
|
|
2567
|
+
for (const { templateName } of mirror.inputs) {
|
|
2568
|
+
outlet.activatedComponentRef.setInput(templateName, data[templateName]);
|
|
2569
|
+
}
|
|
2570
|
+
});
|
|
2571
|
+
this.outletDataSubscriptions.set(outlet, dataSubscription);
|
|
2572
|
+
}
|
|
2573
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2574
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RoutedComponentInputBinder }); }
|
|
2575
|
+
}
|
|
2576
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
|
|
2577
|
+
type: Injectable
|
|
2578
|
+
}] });
|
|
2579
|
+
|
|
2580
|
+
function createRouterState(routeReuseStrategy, curr, prevState) {
|
|
2581
|
+
const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);
|
|
2582
|
+
return new RouterState(root, curr);
|
|
2583
|
+
}
|
|
2584
|
+
function createNode(routeReuseStrategy, curr, prevState) {
|
|
2585
|
+
// reuse an activated route that is currently displayed on the screen
|
|
2586
|
+
if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {
|
|
2587
|
+
const value = prevState.value;
|
|
2588
|
+
value._futureSnapshot = curr.value;
|
|
2589
|
+
const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);
|
|
2590
|
+
return new TreeNode(value, children);
|
|
2591
|
+
}
|
|
2592
|
+
else {
|
|
2593
|
+
if (routeReuseStrategy.shouldAttach(curr.value)) {
|
|
2594
|
+
// retrieve an activated route that is used to be displayed, but is not currently displayed
|
|
2595
|
+
const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);
|
|
2596
|
+
if (detachedRouteHandle !== null) {
|
|
2597
|
+
const tree = detachedRouteHandle.route;
|
|
2598
|
+
tree.value._futureSnapshot = curr.value;
|
|
2599
|
+
tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));
|
|
2600
|
+
return tree;
|
|
2601
|
+
}
|
|
2602
|
+
}
|
|
2603
|
+
const value = createActivatedRoute(curr.value);
|
|
2604
|
+
const children = curr.children.map(c => createNode(routeReuseStrategy, c));
|
|
2605
|
+
return new TreeNode(value, children);
|
|
2606
|
+
}
|
|
2607
|
+
}
|
|
2608
|
+
function createOrReuseChildren(routeReuseStrategy, curr, prevState) {
|
|
2609
|
+
return curr.children.map(child => {
|
|
2610
|
+
for (const p of prevState.children) {
|
|
2611
|
+
if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {
|
|
2612
|
+
return createNode(routeReuseStrategy, child, p);
|
|
2613
|
+
}
|
|
2614
|
+
}
|
|
2615
|
+
return createNode(routeReuseStrategy, child);
|
|
2616
|
+
});
|
|
2617
|
+
}
|
|
2618
|
+
function createActivatedRoute(c) {
|
|
2619
|
+
return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);
|
|
2620
|
+
}
|
|
2621
|
+
|
|
2622
|
+
const NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';
|
|
2623
|
+
function redirectingNavigationError(urlSerializer, redirect) {
|
|
2624
|
+
const { redirectTo, navigationBehaviorOptions } = isUrlTree(redirect) ? { redirectTo: redirect, navigationBehaviorOptions: undefined } : redirect;
|
|
2625
|
+
const error = navigationCancelingError(ngDevMode && `Redirecting to "${urlSerializer.serialize(redirectTo)}"`, 0 /* NavigationCancellationCode.Redirect */, redirect);
|
|
2626
|
+
error.url = redirectTo;
|
|
2627
|
+
error.navigationBehaviorOptions = navigationBehaviorOptions;
|
|
2628
|
+
return error;
|
|
2629
|
+
}
|
|
2630
|
+
function navigationCancelingError(message, code, redirectUrl) {
|
|
2631
|
+
const error = new Error('NavigationCancelingError: ' + (message || ''));
|
|
2632
|
+
error[NAVIGATION_CANCELING_ERROR] = true;
|
|
2633
|
+
error.cancellationCode = code;
|
|
2634
|
+
if (redirectUrl) {
|
|
2635
|
+
error.url = redirectUrl;
|
|
2636
|
+
}
|
|
2637
|
+
return error;
|
|
2638
|
+
}
|
|
2639
|
+
function isRedirectingNavigationCancelingError$1(error) {
|
|
2640
|
+
return isNavigationCancelingError$1(error) && isUrlTree(error.url);
|
|
2641
|
+
}
|
|
2642
|
+
function isNavigationCancelingError$1(error) {
|
|
2643
|
+
return error && error[NAVIGATION_CANCELING_ERROR];
|
|
2644
|
+
}
|
|
2569
2645
|
|
|
2570
2646
|
/**
|
|
2571
2647
|
* This component is used internally within the router to be a placeholder when an empty
|
|
@@ -2577,10 +2653,10 @@ class OutletInjector {
|
|
|
2577
2653
|
* to this `EmptyOutletComponent`.
|
|
2578
2654
|
*/
|
|
2579
2655
|
class ɵEmptyOutletComponent {
|
|
2580
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
2581
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0-next.
|
|
2656
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2657
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0-next.7", 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"] }] }); }
|
|
2582
2658
|
}
|
|
2583
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
2659
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
|
|
2584
2660
|
type: Component,
|
|
2585
2661
|
args: [{
|
|
2586
2662
|
template: `<router-outlet></router-outlet>`,
|
|
@@ -2776,17 +2852,19 @@ function getClosestRouteInjector(snapshot) {
|
|
|
2776
2852
|
return null;
|
|
2777
2853
|
}
|
|
2778
2854
|
|
|
2779
|
-
|
|
2780
|
-
|
|
2855
|
+
let warnedAboutUnsupportedInputBinding = false;
|
|
2856
|
+
const activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map(t => {
|
|
2857
|
+
new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled)
|
|
2781
2858
|
.activate(rootContexts);
|
|
2782
2859
|
return t;
|
|
2783
2860
|
});
|
|
2784
2861
|
class ActivateRoutes {
|
|
2785
|
-
constructor(routeReuseStrategy, futureState, currState, forwardEvent) {
|
|
2862
|
+
constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) {
|
|
2786
2863
|
this.routeReuseStrategy = routeReuseStrategy;
|
|
2787
2864
|
this.futureState = futureState;
|
|
2788
2865
|
this.currState = currState;
|
|
2789
2866
|
this.forwardEvent = forwardEvent;
|
|
2867
|
+
this.inputBindingEnabled = inputBindingEnabled;
|
|
2790
2868
|
}
|
|
2791
2869
|
activate(parentContexts) {
|
|
2792
2870
|
const futureRoot = this.futureState._root;
|
|
@@ -2941,6 +3019,16 @@ class ActivateRoutes {
|
|
|
2941
3019
|
this.activateChildRoutes(futureNode, null, parentContexts);
|
|
2942
3020
|
}
|
|
2943
3021
|
}
|
|
3022
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
3023
|
+
const context = parentContexts.getOrCreateContext(future.outlet);
|
|
3024
|
+
const outlet = context.outlet;
|
|
3025
|
+
if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs &&
|
|
3026
|
+
!warnedAboutUnsupportedInputBinding) {
|
|
3027
|
+
console.warn(`'withComponentInputBinding' feature is enabled but ` +
|
|
3028
|
+
`this application is using an outlet that may not support binding to component inputs.`);
|
|
3029
|
+
warnedAboutUnsupportedInputBinding = true;
|
|
3030
|
+
}
|
|
3031
|
+
}
|
|
2944
3032
|
}
|
|
2945
3033
|
}
|
|
2946
3034
|
|
|
@@ -4042,10 +4130,10 @@ class RouterConfigLoader {
|
|
|
4042
4130
|
}
|
|
4043
4131
|
}));
|
|
4044
4132
|
}
|
|
4045
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4046
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4134
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
|
|
4047
4135
|
}
|
|
4048
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterConfigLoader, decorators: [{
|
|
4049
4137
|
type: Injectable,
|
|
4050
4138
|
args: [{ providedIn: 'root' }]
|
|
4051
4139
|
}] });
|
|
@@ -4073,6 +4161,7 @@ class NavigationTransitions {
|
|
|
4073
4161
|
this.environmentInjector = inject(EnvironmentInjector);
|
|
4074
4162
|
this.urlSerializer = inject(UrlSerializer);
|
|
4075
4163
|
this.rootContexts = inject(ChildrenOutletContexts);
|
|
4164
|
+
this.inputBindingEnabled = inject(INPUT_BINDER, { optional: true }) !== null;
|
|
4076
4165
|
this.navigationId = 0;
|
|
4077
4166
|
/**
|
|
4078
4167
|
* Hook that enables you to pause navigation after the preactivation phase.
|
|
@@ -4322,7 +4411,11 @@ class NavigationTransitions {
|
|
|
4322
4411
|
}
|
|
4323
4412
|
router.browserUrlTree = t.urlAfterRedirects;
|
|
4324
4413
|
}
|
|
4325
|
-
}), activateRoutes(this.rootContexts, router.routeReuseStrategy, (evt) => this.events.next(evt)),
|
|
4414
|
+
}), activateRoutes(this.rootContexts, router.routeReuseStrategy, (evt) => this.events.next(evt), this.inputBindingEnabled),
|
|
4415
|
+
// Ensure that if some observable used to drive the transition doesn't
|
|
4416
|
+
// complete, the navigation still finalizes This should never happen, but
|
|
4417
|
+
// this is done as a safety measure to avoid surfacing this error (#49567).
|
|
4418
|
+
take(1), tap({
|
|
4326
4419
|
next: (t) => {
|
|
4327
4420
|
completed = true;
|
|
4328
4421
|
this.lastSuccessfulNavigation = this.currentNavigation;
|
|
@@ -4416,10 +4509,10 @@ class NavigationTransitions {
|
|
|
4416
4509
|
this.events.next(navCancel);
|
|
4417
4510
|
t.resolve(false);
|
|
4418
4511
|
}
|
|
4419
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4420
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4512
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4513
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
|
|
4421
4514
|
}
|
|
4422
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4515
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: NavigationTransitions, decorators: [{
|
|
4423
4516
|
type: Injectable,
|
|
4424
4517
|
args: [{ providedIn: 'root' }]
|
|
4425
4518
|
}], ctorParameters: function () { return []; } });
|
|
@@ -4470,10 +4563,10 @@ class TitleStrategy {
|
|
|
4470
4563
|
getResolvedTitleForRoute(snapshot) {
|
|
4471
4564
|
return snapshot.data[RouteTitleKey];
|
|
4472
4565
|
}
|
|
4473
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4474
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4566
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4567
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
|
|
4475
4568
|
}
|
|
4476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4569
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: TitleStrategy, decorators: [{
|
|
4477
4570
|
type: Injectable,
|
|
4478
4571
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
|
|
4479
4572
|
}] });
|
|
@@ -4496,10 +4589,10 @@ class DefaultTitleStrategy extends TitleStrategy {
|
|
|
4496
4589
|
this.title.setTitle(title);
|
|
4497
4590
|
}
|
|
4498
4591
|
}
|
|
4499
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4500
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4592
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4593
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
|
|
4501
4594
|
}
|
|
4502
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
|
|
4503
4596
|
type: Injectable,
|
|
4504
4597
|
args: [{ providedIn: 'root' }]
|
|
4505
4598
|
}], ctorParameters: function () { return [{ type: i1.Title }]; } });
|
|
@@ -4512,10 +4605,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.5",
|
|
|
4512
4605
|
* @publicApi
|
|
4513
4606
|
*/
|
|
4514
4607
|
class RouteReuseStrategy {
|
|
4515
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4516
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4608
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4609
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
|
|
4517
4610
|
}
|
|
4518
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4611
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouteReuseStrategy, decorators: [{
|
|
4519
4612
|
type: Injectable,
|
|
4520
4613
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
|
|
4521
4614
|
}] });
|
|
@@ -4566,10 +4659,10 @@ class BaseRouteReuseStrategy {
|
|
|
4566
4659
|
}
|
|
4567
4660
|
}
|
|
4568
4661
|
class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
|
|
4569
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4570
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4662
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4663
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
|
|
4571
4664
|
}
|
|
4572
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4665
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
|
|
4573
4666
|
type: Injectable,
|
|
4574
4667
|
args: [{ providedIn: 'root' }]
|
|
4575
4668
|
}] });
|
|
@@ -4592,10 +4685,10 @@ const ROUTER_CONFIGURATION = new InjectionToken((typeof ngDevMode === 'undefined
|
|
|
4592
4685
|
* @publicApi
|
|
4593
4686
|
*/
|
|
4594
4687
|
class UrlHandlingStrategy {
|
|
4595
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4596
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4688
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4689
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
|
|
4597
4690
|
}
|
|
4598
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
|
|
4599
4692
|
type: Injectable,
|
|
4600
4693
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
|
|
4601
4694
|
}] });
|
|
@@ -4612,10 +4705,10 @@ class DefaultUrlHandlingStrategy {
|
|
|
4612
4705
|
merge(newUrlPart, wholeUrl) {
|
|
4613
4706
|
return newUrlPart;
|
|
4614
4707
|
}
|
|
4615
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4616
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4708
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4709
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
|
|
4617
4710
|
}
|
|
4618
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
4711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
|
|
4619
4712
|
type: Injectable,
|
|
4620
4713
|
args: [{ providedIn: 'root' }]
|
|
4621
4714
|
}] });
|
|
@@ -4846,6 +4939,13 @@ class Router {
|
|
|
4846
4939
|
this.navigationTransitions = inject(NavigationTransitions);
|
|
4847
4940
|
this.urlSerializer = inject(UrlSerializer);
|
|
4848
4941
|
this.location = inject(Location);
|
|
4942
|
+
/**
|
|
4943
|
+
* Indicates whether the the application has opted in to binding Router data to component inputs.
|
|
4944
|
+
*
|
|
4945
|
+
* This option is enabled by the `withComponentInputBinding` feature of `provideRouter` or
|
|
4946
|
+
* `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.
|
|
4947
|
+
*/
|
|
4948
|
+
this.componentInputBindingEnabled = !!inject(INPUT_BINDER, { optional: true });
|
|
4849
4949
|
this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone();
|
|
4850
4950
|
this.resetConfig(this.config);
|
|
4851
4951
|
this.currentUrlTree = new UrlTree();
|
|
@@ -5102,9 +5202,6 @@ class Router {
|
|
|
5102
5202
|
if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) {
|
|
5103
5203
|
this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`);
|
|
5104
5204
|
}
|
|
5105
|
-
if (url instanceof UrlTree && url._warnIfUsedForNavigation) {
|
|
5106
|
-
this.console.warn(url._warnIfUsedForNavigation);
|
|
5107
|
-
}
|
|
5108
5205
|
}
|
|
5109
5206
|
const urlTree = isUrlTree(url) ? url : this.parseUrl(url);
|
|
5110
5207
|
const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);
|
|
@@ -5332,10 +5429,10 @@ class Router {
|
|
|
5332
5429
|
}
|
|
5333
5430
|
return { navigationId };
|
|
5334
5431
|
}
|
|
5335
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5336
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5432
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5433
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: Router, providedIn: 'root' }); }
|
|
5337
5434
|
}
|
|
5338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5435
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: Router, decorators: [{
|
|
5339
5436
|
type: Injectable,
|
|
5340
5437
|
args: [{ providedIn: 'root' }]
|
|
5341
5438
|
}], ctorParameters: function () { return []; } });
|
|
@@ -5621,10 +5718,10 @@ class RouterLink {
|
|
|
5621
5718
|
preserveFragment: this.preserveFragment,
|
|
5622
5719
|
});
|
|
5623
5720
|
}
|
|
5624
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5625
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.
|
|
5721
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", 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 }); }
|
|
5722
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.7", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", 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 }); }
|
|
5626
5723
|
}
|
|
5627
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5724
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterLink, decorators: [{
|
|
5628
5725
|
type: Directive,
|
|
5629
5726
|
args: [{
|
|
5630
5727
|
selector: '[routerLink]',
|
|
@@ -5844,10 +5941,10 @@ class RouterLinkActive {
|
|
|
5844
5941
|
const isActiveCheckFn = this.isLinkActive(this.router);
|
|
5845
5942
|
return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);
|
|
5846
5943
|
}
|
|
5847
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5848
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.
|
|
5944
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5945
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.7", 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 }); }
|
|
5849
5946
|
}
|
|
5850
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5947
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterLinkActive, decorators: [{
|
|
5851
5948
|
type: Directive,
|
|
5852
5949
|
args: [{
|
|
5853
5950
|
selector: '[routerLinkActive]',
|
|
@@ -5899,10 +5996,10 @@ class PreloadAllModules {
|
|
|
5899
5996
|
preload(route, fn) {
|
|
5900
5997
|
return fn().pipe(catchError(() => of(null)));
|
|
5901
5998
|
}
|
|
5902
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5903
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5999
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6000
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
|
|
5904
6001
|
}
|
|
5905
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6002
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: PreloadAllModules, decorators: [{
|
|
5906
6003
|
type: Injectable,
|
|
5907
6004
|
args: [{ providedIn: 'root' }]
|
|
5908
6005
|
}] });
|
|
@@ -5919,10 +6016,10 @@ class NoPreloading {
|
|
|
5919
6016
|
preload(route, fn) {
|
|
5920
6017
|
return of(null);
|
|
5921
6018
|
}
|
|
5922
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
5923
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6019
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6020
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
|
|
5924
6021
|
}
|
|
5925
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6022
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: NoPreloading, decorators: [{
|
|
5926
6023
|
type: Injectable,
|
|
5927
6024
|
args: [{ providedIn: 'root' }]
|
|
5928
6025
|
}] });
|
|
@@ -6015,10 +6112,10 @@ class RouterPreloader {
|
|
|
6015
6112
|
}
|
|
6016
6113
|
});
|
|
6017
6114
|
}
|
|
6018
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6019
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6115
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6116
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
|
|
6020
6117
|
}
|
|
6021
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterPreloader, decorators: [{
|
|
6022
6119
|
type: Injectable,
|
|
6023
6120
|
args: [{ providedIn: 'root' }]
|
|
6024
6121
|
}], ctorParameters: function () { return [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }]; } });
|
|
@@ -6111,10 +6208,10 @@ class RouterScroller {
|
|
|
6111
6208
|
this.routerEventsSubscription?.unsubscribe();
|
|
6112
6209
|
this.scrollEventsSubscription?.unsubscribe();
|
|
6113
6210
|
}
|
|
6114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6115
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6211
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6212
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterScroller }); }
|
|
6116
6213
|
}
|
|
6117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterScroller, decorators: [{
|
|
6118
6215
|
type: Injectable
|
|
6119
6216
|
}], ctorParameters: function () { return [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }]; } });
|
|
6120
6217
|
|
|
@@ -6269,6 +6366,7 @@ function getBootstrapListener() {
|
|
|
6269
6366
|
router.resetRootComponentType(ref.componentTypes[0]);
|
|
6270
6367
|
if (!bootstrapDone.closed) {
|
|
6271
6368
|
bootstrapDone.next();
|
|
6369
|
+
bootstrapDone.complete();
|
|
6272
6370
|
bootstrapDone.unsubscribe();
|
|
6273
6371
|
}
|
|
6274
6372
|
};
|
|
@@ -6575,6 +6673,33 @@ function withNavigationErrorHandler(fn) {
|
|
|
6575
6673
|
}];
|
|
6576
6674
|
return routerFeature(7 /* RouterFeatureKind.NavigationErrorHandlerFeature */, providers);
|
|
6577
6675
|
}
|
|
6676
|
+
/**
|
|
6677
|
+
* Enables binding information from the `Router` state directly to the inputs of the component in
|
|
6678
|
+
* `Route` configurations.
|
|
6679
|
+
*
|
|
6680
|
+
* @usageNotes
|
|
6681
|
+
*
|
|
6682
|
+
* Basic example of how you can enable the feature:
|
|
6683
|
+
* ```
|
|
6684
|
+
* const appRoutes: Routes = [];
|
|
6685
|
+
* bootstrapApplication(AppComponent,
|
|
6686
|
+
* {
|
|
6687
|
+
* providers: [
|
|
6688
|
+
* provideRouter(appRoutes, withComponentInputBinding())
|
|
6689
|
+
* ]
|
|
6690
|
+
* }
|
|
6691
|
+
* );
|
|
6692
|
+
* ```
|
|
6693
|
+
*
|
|
6694
|
+
* @returns A set of providers for use with `provideRouter`.
|
|
6695
|
+
*/
|
|
6696
|
+
function withComponentInputBinding() {
|
|
6697
|
+
const providers = [
|
|
6698
|
+
RoutedComponentInputBinder,
|
|
6699
|
+
{ provide: INPUT_BINDER, useExisting: RoutedComponentInputBinder },
|
|
6700
|
+
];
|
|
6701
|
+
return routerFeature(8 /* RouterFeatureKind.ComponentInputBindingFeature */, providers);
|
|
6702
|
+
}
|
|
6578
6703
|
|
|
6579
6704
|
/**
|
|
6580
6705
|
* The directives defined in the `RouterModule`.
|
|
@@ -6665,6 +6790,7 @@ class RouterModule {
|
|
|
6665
6790
|
config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [],
|
|
6666
6791
|
{ provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },
|
|
6667
6792
|
config?.initialNavigation ? provideInitialNavigation(config) : [],
|
|
6793
|
+
config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [],
|
|
6668
6794
|
provideRouterInitializer(),
|
|
6669
6795
|
],
|
|
6670
6796
|
};
|
|
@@ -6691,11 +6817,11 @@ class RouterModule {
|
|
|
6691
6817
|
providers: [{ provide: ROUTES, multi: true, useValue: routes }],
|
|
6692
6818
|
};
|
|
6693
6819
|
}
|
|
6694
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6695
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0-next.
|
|
6696
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6820
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6821
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
|
|
6822
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterModule, imports: [ɵEmptyOutletComponent] }); }
|
|
6697
6823
|
}
|
|
6698
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.
|
|
6824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: RouterModule, decorators: [{
|
|
6699
6825
|
type: NgModule,
|
|
6700
6826
|
args: [{
|
|
6701
6827
|
imports: ROUTER_DIRECTIVES,
|
|
@@ -6840,7 +6966,7 @@ function mapToResolve(provider) {
|
|
|
6840
6966
|
/**
|
|
6841
6967
|
* @publicApi
|
|
6842
6968
|
*/
|
|
6843
|
-
const VERSION = new Version('16.0.0-next.
|
|
6969
|
+
const VERSION = new Version('16.0.0-next.7');
|
|
6844
6970
|
|
|
6845
6971
|
/**
|
|
6846
6972
|
* @module
|
|
@@ -6855,5 +6981,5 @@ const VERSION = new Version('16.0.0-next.5');
|
|
|
6855
6981
|
* Generated bundle index. Do not edit.
|
|
6856
6982
|
*/
|
|
6857
6983
|
|
|
6858
|
-
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, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, withPreloading as ɵwithPreloading };
|
|
6984
|
+
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, withPreloading as ɵwithPreloading };
|
|
6859
6985
|
//# sourceMappingURL=router.mjs.map
|