@angular/router 19.0.0-next.8 → 19.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/router.mjs +556 -308
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/testing.mjs +20 -15
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +1 -1
- package/index.d.ts +4 -2
- package/package.json +4 -4
- package/testing/index.d.ts +1 -1
- package/upgrade/index.d.ts +1 -1
package/fesm2022/router.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v19.0.0-
|
|
2
|
+
* @license Angular v19.0.0-rc.0
|
|
3
3
|
* (c) 2010-2024 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, createEnvironmentInjector, ɵisNgModule, isStandalone, InjectionToken, EventEmitter, input, inject, ViewContainerRef, ChangeDetectorRef, Directive, Input, Output, reflectComponentType, ɵisInjectable, runInInjectionContext, Component, Compiler, NgModuleFactory, NgZone, afterNextRender, EnvironmentInjector, ɵConsole, ɵPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, SkipSelf, NgModule, Inject, Version } from '@angular/core';
|
|
8
|
+
import { ɵisPromise, ɵRuntimeError, Injectable, createEnvironmentInjector, ɵisNgModule, isStandalone, InjectionToken, EventEmitter, input, inject, ViewContainerRef, ChangeDetectorRef, Directive, Input, Output, reflectComponentType, ɵisInjectable, runInInjectionContext, Component, Compiler, NgModuleFactory, NgZone, afterNextRender, EnvironmentInjector, ɵConsole, ɵPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, SkipSelf, NgModule, Inject, Version, ɵpublishExternalGlobalUtil } 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
11
|
import { DOCUMENT, Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';
|
|
@@ -25,6 +25,7 @@ const PRIMARY_OUTLET = 'primary';
|
|
|
25
25
|
*/
|
|
26
26
|
const RouteTitleKey = /* @__PURE__ */ Symbol('RouteTitle');
|
|
27
27
|
class ParamsAsMap {
|
|
28
|
+
params;
|
|
28
29
|
constructor(params) {
|
|
29
30
|
this.params = params || {};
|
|
30
31
|
}
|
|
@@ -282,6 +283,11 @@ function matrixParamsMatch(containerPaths, containeePaths, options) {
|
|
|
282
283
|
* @publicApi
|
|
283
284
|
*/
|
|
284
285
|
class UrlTree {
|
|
286
|
+
root;
|
|
287
|
+
queryParams;
|
|
288
|
+
fragment;
|
|
289
|
+
/** @internal */
|
|
290
|
+
_queryParamMap;
|
|
285
291
|
constructor(
|
|
286
292
|
/** The root segment group of the URL tree */
|
|
287
293
|
root = new UrlSegmentGroup([], {}),
|
|
@@ -318,6 +324,10 @@ class UrlTree {
|
|
|
318
324
|
* @publicApi
|
|
319
325
|
*/
|
|
320
326
|
class UrlSegmentGroup {
|
|
327
|
+
segments;
|
|
328
|
+
children;
|
|
329
|
+
/** The parent node in the url tree */
|
|
330
|
+
parent = null;
|
|
321
331
|
constructor(
|
|
322
332
|
/** The URL segments of this group. See `UrlSegment` for more information */
|
|
323
333
|
segments,
|
|
@@ -325,8 +335,6 @@ class UrlSegmentGroup {
|
|
|
325
335
|
children) {
|
|
326
336
|
this.segments = segments;
|
|
327
337
|
this.children = children;
|
|
328
|
-
/** The parent node in the url tree */
|
|
329
|
-
this.parent = null;
|
|
330
338
|
Object.values(children).forEach((v) => (v.parent = this));
|
|
331
339
|
}
|
|
332
340
|
/** Whether the segment has child segments */
|
|
@@ -369,6 +377,10 @@ class UrlSegmentGroup {
|
|
|
369
377
|
* @publicApi
|
|
370
378
|
*/
|
|
371
379
|
class UrlSegment {
|
|
380
|
+
path;
|
|
381
|
+
parameters;
|
|
382
|
+
/** @internal */
|
|
383
|
+
_parameterMap;
|
|
372
384
|
constructor(
|
|
373
385
|
/** The path part of a URL segment */
|
|
374
386
|
path,
|
|
@@ -421,10 +433,10 @@ function mapChildrenIntoArray(segment, fn) {
|
|
|
421
433
|
* @publicApi
|
|
422
434
|
*/
|
|
423
435
|
class UrlSerializer {
|
|
424
|
-
static
|
|
425
|
-
static
|
|
436
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
437
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() });
|
|
426
438
|
}
|
|
427
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: UrlSerializer, decorators: [{
|
|
428
440
|
type: Injectable,
|
|
429
441
|
args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
|
|
430
442
|
}] });
|
|
@@ -584,6 +596,8 @@ function matchUrlQueryParamValue(str) {
|
|
|
584
596
|
return match ? match[0] : '';
|
|
585
597
|
}
|
|
586
598
|
class UrlParser {
|
|
599
|
+
url;
|
|
600
|
+
remaining;
|
|
587
601
|
constructor(url) {
|
|
588
602
|
this.url = url;
|
|
589
603
|
this.remaining = url;
|
|
@@ -941,6 +955,9 @@ function replaceSegment(current, oldSegment, newSegment) {
|
|
|
941
955
|
return new UrlSegmentGroup(current.segments, children);
|
|
942
956
|
}
|
|
943
957
|
class Navigation {
|
|
958
|
+
isAbsolute;
|
|
959
|
+
numberOfDoubleDots;
|
|
960
|
+
commands;
|
|
944
961
|
constructor(isAbsolute, numberOfDoubleDots, commands) {
|
|
945
962
|
this.isAbsolute = isAbsolute;
|
|
946
963
|
this.numberOfDoubleDots = numberOfDoubleDots;
|
|
@@ -1006,6 +1023,9 @@ function computeNavigation(commands) {
|
|
|
1006
1023
|
return new Navigation(isAbsolute, numberOfDoubleDots, res);
|
|
1007
1024
|
}
|
|
1008
1025
|
class Position {
|
|
1026
|
+
segmentGroup;
|
|
1027
|
+
processChildren;
|
|
1028
|
+
index;
|
|
1009
1029
|
constructor(segmentGroup, processChildren, index) {
|
|
1010
1030
|
this.segmentGroup = segmentGroup;
|
|
1011
1031
|
this.processChildren = processChildren;
|
|
@@ -1260,6 +1280,8 @@ var EventType;
|
|
|
1260
1280
|
* @publicApi
|
|
1261
1281
|
*/
|
|
1262
1282
|
class RouterEvent {
|
|
1283
|
+
id;
|
|
1284
|
+
url;
|
|
1263
1285
|
constructor(
|
|
1264
1286
|
/** A unique ID that the router assigns to every router navigation. */
|
|
1265
1287
|
id,
|
|
@@ -1275,6 +1297,34 @@ class RouterEvent {
|
|
|
1275
1297
|
* @publicApi
|
|
1276
1298
|
*/
|
|
1277
1299
|
class NavigationStart extends RouterEvent {
|
|
1300
|
+
type = EventType.NavigationStart;
|
|
1301
|
+
/**
|
|
1302
|
+
* Identifies the call or event that triggered the navigation.
|
|
1303
|
+
* An `imperative` trigger is a call to `router.navigateByUrl()` or `router.navigate()`.
|
|
1304
|
+
*
|
|
1305
|
+
* @see {@link NavigationEnd}
|
|
1306
|
+
* @see {@link NavigationCancel}
|
|
1307
|
+
* @see {@link NavigationError}
|
|
1308
|
+
*/
|
|
1309
|
+
navigationTrigger;
|
|
1310
|
+
/**
|
|
1311
|
+
* The navigation state that was previously supplied to the `pushState` call,
|
|
1312
|
+
* when the navigation is triggered by a `popstate` event. Otherwise null.
|
|
1313
|
+
*
|
|
1314
|
+
* The state object is defined by `NavigationExtras`, and contains any
|
|
1315
|
+
* developer-defined state value, as well as a unique ID that
|
|
1316
|
+
* the router assigns to every router transition/navigation.
|
|
1317
|
+
*
|
|
1318
|
+
* From the perspective of the router, the router never "goes back".
|
|
1319
|
+
* When the user clicks on the back button in the browser,
|
|
1320
|
+
* a new navigation ID is created.
|
|
1321
|
+
*
|
|
1322
|
+
* Use the ID in this previous-state object to differentiate between a newly created
|
|
1323
|
+
* state and one returned to by a `popstate` event, so that you can restore some
|
|
1324
|
+
* remembered state, such as scroll position.
|
|
1325
|
+
*
|
|
1326
|
+
*/
|
|
1327
|
+
restoredState;
|
|
1278
1328
|
constructor(
|
|
1279
1329
|
/** @docsNotRequired */
|
|
1280
1330
|
id,
|
|
@@ -1285,7 +1335,6 @@ class NavigationStart extends RouterEvent {
|
|
|
1285
1335
|
/** @docsNotRequired */
|
|
1286
1336
|
restoredState = null) {
|
|
1287
1337
|
super(id, url);
|
|
1288
|
-
this.type = EventType.NavigationStart;
|
|
1289
1338
|
this.navigationTrigger = navigationTrigger;
|
|
1290
1339
|
this.restoredState = restoredState;
|
|
1291
1340
|
}
|
|
@@ -1304,6 +1353,8 @@ class NavigationStart extends RouterEvent {
|
|
|
1304
1353
|
* @publicApi
|
|
1305
1354
|
*/
|
|
1306
1355
|
class NavigationEnd extends RouterEvent {
|
|
1356
|
+
urlAfterRedirects;
|
|
1357
|
+
type = EventType.NavigationEnd;
|
|
1307
1358
|
constructor(
|
|
1308
1359
|
/** @docsNotRequired */
|
|
1309
1360
|
id,
|
|
@@ -1313,7 +1364,6 @@ class NavigationEnd extends RouterEvent {
|
|
|
1313
1364
|
urlAfterRedirects) {
|
|
1314
1365
|
super(id, url);
|
|
1315
1366
|
this.urlAfterRedirects = urlAfterRedirects;
|
|
1316
|
-
this.type = EventType.NavigationEnd;
|
|
1317
1367
|
}
|
|
1318
1368
|
/** @docsNotRequired */
|
|
1319
1369
|
toString() {
|
|
@@ -1377,6 +1427,9 @@ var NavigationSkippedCode;
|
|
|
1377
1427
|
* @publicApi
|
|
1378
1428
|
*/
|
|
1379
1429
|
class NavigationCancel extends RouterEvent {
|
|
1430
|
+
reason;
|
|
1431
|
+
code;
|
|
1432
|
+
type = EventType.NavigationCancel;
|
|
1380
1433
|
constructor(
|
|
1381
1434
|
/** @docsNotRequired */
|
|
1382
1435
|
id,
|
|
@@ -1396,7 +1449,6 @@ class NavigationCancel extends RouterEvent {
|
|
|
1396
1449
|
super(id, url);
|
|
1397
1450
|
this.reason = reason;
|
|
1398
1451
|
this.code = code;
|
|
1399
|
-
this.type = EventType.NavigationCancel;
|
|
1400
1452
|
}
|
|
1401
1453
|
/** @docsNotRequired */
|
|
1402
1454
|
toString() {
|
|
@@ -1412,6 +1464,9 @@ class NavigationCancel extends RouterEvent {
|
|
|
1412
1464
|
* @publicApi
|
|
1413
1465
|
*/
|
|
1414
1466
|
class NavigationSkipped extends RouterEvent {
|
|
1467
|
+
reason;
|
|
1468
|
+
code;
|
|
1469
|
+
type = EventType.NavigationSkipped;
|
|
1415
1470
|
constructor(
|
|
1416
1471
|
/** @docsNotRequired */
|
|
1417
1472
|
id,
|
|
@@ -1431,7 +1486,6 @@ class NavigationSkipped extends RouterEvent {
|
|
|
1431
1486
|
super(id, url);
|
|
1432
1487
|
this.reason = reason;
|
|
1433
1488
|
this.code = code;
|
|
1434
|
-
this.type = EventType.NavigationSkipped;
|
|
1435
1489
|
}
|
|
1436
1490
|
}
|
|
1437
1491
|
/**
|
|
@@ -1444,6 +1498,9 @@ class NavigationSkipped extends RouterEvent {
|
|
|
1444
1498
|
* @publicApi
|
|
1445
1499
|
*/
|
|
1446
1500
|
class NavigationError extends RouterEvent {
|
|
1501
|
+
error;
|
|
1502
|
+
target;
|
|
1503
|
+
type = EventType.NavigationError;
|
|
1447
1504
|
constructor(
|
|
1448
1505
|
/** @docsNotRequired */
|
|
1449
1506
|
id,
|
|
@@ -1461,7 +1518,6 @@ class NavigationError extends RouterEvent {
|
|
|
1461
1518
|
super(id, url);
|
|
1462
1519
|
this.error = error;
|
|
1463
1520
|
this.target = target;
|
|
1464
|
-
this.type = EventType.NavigationError;
|
|
1465
1521
|
}
|
|
1466
1522
|
/** @docsNotRequired */
|
|
1467
1523
|
toString() {
|
|
@@ -1474,6 +1530,9 @@ class NavigationError extends RouterEvent {
|
|
|
1474
1530
|
* @publicApi
|
|
1475
1531
|
*/
|
|
1476
1532
|
class RoutesRecognized extends RouterEvent {
|
|
1533
|
+
urlAfterRedirects;
|
|
1534
|
+
state;
|
|
1535
|
+
type = EventType.RoutesRecognized;
|
|
1477
1536
|
constructor(
|
|
1478
1537
|
/** @docsNotRequired */
|
|
1479
1538
|
id,
|
|
@@ -1486,7 +1545,6 @@ class RoutesRecognized extends RouterEvent {
|
|
|
1486
1545
|
super(id, url);
|
|
1487
1546
|
this.urlAfterRedirects = urlAfterRedirects;
|
|
1488
1547
|
this.state = state;
|
|
1489
|
-
this.type = EventType.RoutesRecognized;
|
|
1490
1548
|
}
|
|
1491
1549
|
/** @docsNotRequired */
|
|
1492
1550
|
toString() {
|
|
@@ -1501,6 +1559,9 @@ class RoutesRecognized extends RouterEvent {
|
|
|
1501
1559
|
* @publicApi
|
|
1502
1560
|
*/
|
|
1503
1561
|
class GuardsCheckStart extends RouterEvent {
|
|
1562
|
+
urlAfterRedirects;
|
|
1563
|
+
state;
|
|
1564
|
+
type = EventType.GuardsCheckStart;
|
|
1504
1565
|
constructor(
|
|
1505
1566
|
/** @docsNotRequired */
|
|
1506
1567
|
id,
|
|
@@ -1513,7 +1574,6 @@ class GuardsCheckStart extends RouterEvent {
|
|
|
1513
1574
|
super(id, url);
|
|
1514
1575
|
this.urlAfterRedirects = urlAfterRedirects;
|
|
1515
1576
|
this.state = state;
|
|
1516
|
-
this.type = EventType.GuardsCheckStart;
|
|
1517
1577
|
}
|
|
1518
1578
|
toString() {
|
|
1519
1579
|
return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;
|
|
@@ -1527,6 +1587,10 @@ class GuardsCheckStart extends RouterEvent {
|
|
|
1527
1587
|
* @publicApi
|
|
1528
1588
|
*/
|
|
1529
1589
|
class GuardsCheckEnd extends RouterEvent {
|
|
1590
|
+
urlAfterRedirects;
|
|
1591
|
+
state;
|
|
1592
|
+
shouldActivate;
|
|
1593
|
+
type = EventType.GuardsCheckEnd;
|
|
1530
1594
|
constructor(
|
|
1531
1595
|
/** @docsNotRequired */
|
|
1532
1596
|
id,
|
|
@@ -1542,7 +1606,6 @@ class GuardsCheckEnd extends RouterEvent {
|
|
|
1542
1606
|
this.urlAfterRedirects = urlAfterRedirects;
|
|
1543
1607
|
this.state = state;
|
|
1544
1608
|
this.shouldActivate = shouldActivate;
|
|
1545
|
-
this.type = EventType.GuardsCheckEnd;
|
|
1546
1609
|
}
|
|
1547
1610
|
toString() {
|
|
1548
1611
|
return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;
|
|
@@ -1559,6 +1622,9 @@ class GuardsCheckEnd extends RouterEvent {
|
|
|
1559
1622
|
* @publicApi
|
|
1560
1623
|
*/
|
|
1561
1624
|
class ResolveStart extends RouterEvent {
|
|
1625
|
+
urlAfterRedirects;
|
|
1626
|
+
state;
|
|
1627
|
+
type = EventType.ResolveStart;
|
|
1562
1628
|
constructor(
|
|
1563
1629
|
/** @docsNotRequired */
|
|
1564
1630
|
id,
|
|
@@ -1571,7 +1637,6 @@ class ResolveStart extends RouterEvent {
|
|
|
1571
1637
|
super(id, url);
|
|
1572
1638
|
this.urlAfterRedirects = urlAfterRedirects;
|
|
1573
1639
|
this.state = state;
|
|
1574
|
-
this.type = EventType.ResolveStart;
|
|
1575
1640
|
}
|
|
1576
1641
|
toString() {
|
|
1577
1642
|
return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;
|
|
@@ -1584,6 +1649,9 @@ class ResolveStart extends RouterEvent {
|
|
|
1584
1649
|
* @publicApi
|
|
1585
1650
|
*/
|
|
1586
1651
|
class ResolveEnd extends RouterEvent {
|
|
1652
|
+
urlAfterRedirects;
|
|
1653
|
+
state;
|
|
1654
|
+
type = EventType.ResolveEnd;
|
|
1587
1655
|
constructor(
|
|
1588
1656
|
/** @docsNotRequired */
|
|
1589
1657
|
id,
|
|
@@ -1596,7 +1664,6 @@ class ResolveEnd extends RouterEvent {
|
|
|
1596
1664
|
super(id, url);
|
|
1597
1665
|
this.urlAfterRedirects = urlAfterRedirects;
|
|
1598
1666
|
this.state = state;
|
|
1599
|
-
this.type = EventType.ResolveEnd;
|
|
1600
1667
|
}
|
|
1601
1668
|
toString() {
|
|
1602
1669
|
return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;
|
|
@@ -1610,11 +1677,12 @@ class ResolveEnd extends RouterEvent {
|
|
|
1610
1677
|
* @publicApi
|
|
1611
1678
|
*/
|
|
1612
1679
|
class RouteConfigLoadStart {
|
|
1680
|
+
route;
|
|
1681
|
+
type = EventType.RouteConfigLoadStart;
|
|
1613
1682
|
constructor(
|
|
1614
1683
|
/** @docsNotRequired */
|
|
1615
1684
|
route) {
|
|
1616
1685
|
this.route = route;
|
|
1617
|
-
this.type = EventType.RouteConfigLoadStart;
|
|
1618
1686
|
}
|
|
1619
1687
|
toString() {
|
|
1620
1688
|
return `RouteConfigLoadStart(path: ${this.route.path})`;
|
|
@@ -1628,11 +1696,12 @@ class RouteConfigLoadStart {
|
|
|
1628
1696
|
* @publicApi
|
|
1629
1697
|
*/
|
|
1630
1698
|
class RouteConfigLoadEnd {
|
|
1699
|
+
route;
|
|
1700
|
+
type = EventType.RouteConfigLoadEnd;
|
|
1631
1701
|
constructor(
|
|
1632
1702
|
/** @docsNotRequired */
|
|
1633
1703
|
route) {
|
|
1634
1704
|
this.route = route;
|
|
1635
|
-
this.type = EventType.RouteConfigLoadEnd;
|
|
1636
1705
|
}
|
|
1637
1706
|
toString() {
|
|
1638
1707
|
return `RouteConfigLoadEnd(path: ${this.route.path})`;
|
|
@@ -1647,11 +1716,12 @@ class RouteConfigLoadEnd {
|
|
|
1647
1716
|
* @publicApi
|
|
1648
1717
|
*/
|
|
1649
1718
|
class ChildActivationStart {
|
|
1719
|
+
snapshot;
|
|
1720
|
+
type = EventType.ChildActivationStart;
|
|
1650
1721
|
constructor(
|
|
1651
1722
|
/** @docsNotRequired */
|
|
1652
1723
|
snapshot) {
|
|
1653
1724
|
this.snapshot = snapshot;
|
|
1654
|
-
this.type = EventType.ChildActivationStart;
|
|
1655
1725
|
}
|
|
1656
1726
|
toString() {
|
|
1657
1727
|
const path = (this.snapshot.routeConfig && this.snapshot.routeConfig.path) || '';
|
|
@@ -1666,11 +1736,12 @@ class ChildActivationStart {
|
|
|
1666
1736
|
* @publicApi
|
|
1667
1737
|
*/
|
|
1668
1738
|
class ChildActivationEnd {
|
|
1739
|
+
snapshot;
|
|
1740
|
+
type = EventType.ChildActivationEnd;
|
|
1669
1741
|
constructor(
|
|
1670
1742
|
/** @docsNotRequired */
|
|
1671
1743
|
snapshot) {
|
|
1672
1744
|
this.snapshot = snapshot;
|
|
1673
|
-
this.type = EventType.ChildActivationEnd;
|
|
1674
1745
|
}
|
|
1675
1746
|
toString() {
|
|
1676
1747
|
const path = (this.snapshot.routeConfig && this.snapshot.routeConfig.path) || '';
|
|
@@ -1686,11 +1757,12 @@ class ChildActivationEnd {
|
|
|
1686
1757
|
* @publicApi
|
|
1687
1758
|
*/
|
|
1688
1759
|
class ActivationStart {
|
|
1760
|
+
snapshot;
|
|
1761
|
+
type = EventType.ActivationStart;
|
|
1689
1762
|
constructor(
|
|
1690
1763
|
/** @docsNotRequired */
|
|
1691
1764
|
snapshot) {
|
|
1692
1765
|
this.snapshot = snapshot;
|
|
1693
|
-
this.type = EventType.ActivationStart;
|
|
1694
1766
|
}
|
|
1695
1767
|
toString() {
|
|
1696
1768
|
const path = (this.snapshot.routeConfig && this.snapshot.routeConfig.path) || '';
|
|
@@ -1706,11 +1778,12 @@ class ActivationStart {
|
|
|
1706
1778
|
* @publicApi
|
|
1707
1779
|
*/
|
|
1708
1780
|
class ActivationEnd {
|
|
1781
|
+
snapshot;
|
|
1782
|
+
type = EventType.ActivationEnd;
|
|
1709
1783
|
constructor(
|
|
1710
1784
|
/** @docsNotRequired */
|
|
1711
1785
|
snapshot) {
|
|
1712
1786
|
this.snapshot = snapshot;
|
|
1713
|
-
this.type = EventType.ActivationEnd;
|
|
1714
1787
|
}
|
|
1715
1788
|
toString() {
|
|
1716
1789
|
const path = (this.snapshot.routeConfig && this.snapshot.routeConfig.path) || '';
|
|
@@ -1723,6 +1796,10 @@ class ActivationEnd {
|
|
|
1723
1796
|
* @publicApi
|
|
1724
1797
|
*/
|
|
1725
1798
|
class Scroll {
|
|
1799
|
+
routerEvent;
|
|
1800
|
+
position;
|
|
1801
|
+
anchor;
|
|
1802
|
+
type = EventType.Scroll;
|
|
1726
1803
|
constructor(
|
|
1727
1804
|
/** @docsNotRequired */
|
|
1728
1805
|
routerEvent,
|
|
@@ -1733,7 +1810,6 @@ class Scroll {
|
|
|
1733
1810
|
this.routerEvent = routerEvent;
|
|
1734
1811
|
this.position = position;
|
|
1735
1812
|
this.anchor = anchor;
|
|
1736
|
-
this.type = EventType.Scroll;
|
|
1737
1813
|
}
|
|
1738
1814
|
toString() {
|
|
1739
1815
|
const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null;
|
|
@@ -1743,6 +1819,8 @@ class Scroll {
|
|
|
1743
1819
|
class BeforeActivateRoutes {
|
|
1744
1820
|
}
|
|
1745
1821
|
class RedirectRequest {
|
|
1822
|
+
url;
|
|
1823
|
+
navigationBehaviorOptions;
|
|
1746
1824
|
constructor(url, navigationBehaviorOptions) {
|
|
1747
1825
|
this.url = url;
|
|
1748
1826
|
this.navigationBehaviorOptions = navigationBehaviorOptions;
|
|
@@ -1804,7 +1882,7 @@ function getOrCreateRouteInjectorIfNeeded(route, currentInjector) {
|
|
|
1804
1882
|
}
|
|
1805
1883
|
return route._injector ?? currentInjector;
|
|
1806
1884
|
}
|
|
1807
|
-
function getLoadedRoutes(route) {
|
|
1885
|
+
function getLoadedRoutes$1(route) {
|
|
1808
1886
|
return route._loadedRoutes;
|
|
1809
1887
|
}
|
|
1810
1888
|
function getLoadedInjector(route) {
|
|
@@ -1978,17 +2056,17 @@ function getClosestRouteInjector(snapshot) {
|
|
|
1978
2056
|
* @publicApi
|
|
1979
2057
|
*/
|
|
1980
2058
|
class OutletContext {
|
|
2059
|
+
rootInjector;
|
|
2060
|
+
outlet = null;
|
|
2061
|
+
route = null;
|
|
2062
|
+
children;
|
|
2063
|
+
attachRef = null;
|
|
1981
2064
|
get injector() {
|
|
1982
2065
|
return getClosestRouteInjector(this.route?.snapshot) ?? this.rootInjector;
|
|
1983
2066
|
}
|
|
1984
|
-
// TODO(atscott): Only here to avoid a "breaking" change in a patch/minor. Remove in v19.
|
|
1985
|
-
set injector(_) { }
|
|
1986
2067
|
constructor(rootInjector) {
|
|
1987
2068
|
this.rootInjector = rootInjector;
|
|
1988
|
-
this.outlet = null;
|
|
1989
|
-
this.route = null;
|
|
1990
2069
|
this.children = new ChildrenOutletContexts(this.rootInjector);
|
|
1991
|
-
this.attachRef = null;
|
|
1992
2070
|
}
|
|
1993
2071
|
}
|
|
1994
2072
|
/**
|
|
@@ -1997,11 +2075,12 @@ class OutletContext {
|
|
|
1997
2075
|
* @publicApi
|
|
1998
2076
|
*/
|
|
1999
2077
|
class ChildrenOutletContexts {
|
|
2078
|
+
rootInjector;
|
|
2079
|
+
// contexts for child outlets, by name.
|
|
2080
|
+
contexts = new Map();
|
|
2000
2081
|
/** @nodoc */
|
|
2001
2082
|
constructor(rootInjector) {
|
|
2002
2083
|
this.rootInjector = rootInjector;
|
|
2003
|
-
// contexts for child outlets, by name.
|
|
2004
|
-
this.contexts = new Map();
|
|
2005
2084
|
}
|
|
2006
2085
|
/** Called when a `RouterOutlet` directive is instantiated */
|
|
2007
2086
|
onChildOutletCreated(childName, outlet) {
|
|
@@ -2044,15 +2123,17 @@ class ChildrenOutletContexts {
|
|
|
2044
2123
|
getContext(childName) {
|
|
2045
2124
|
return this.contexts.get(childName) || null;
|
|
2046
2125
|
}
|
|
2047
|
-
static
|
|
2048
|
-
static
|
|
2126
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2127
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' });
|
|
2049
2128
|
}
|
|
2050
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
2129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
|
|
2051
2130
|
type: Injectable,
|
|
2052
2131
|
args: [{ providedIn: 'root' }]
|
|
2053
2132
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
2054
2133
|
|
|
2055
2134
|
class Tree {
|
|
2135
|
+
/** @internal */
|
|
2136
|
+
_root;
|
|
2056
2137
|
constructor(root) {
|
|
2057
2138
|
this._root = root;
|
|
2058
2139
|
}
|
|
@@ -2122,6 +2203,8 @@ function findPath(value, node) {
|
|
|
2122
2203
|
return [];
|
|
2123
2204
|
}
|
|
2124
2205
|
class TreeNode {
|
|
2206
|
+
value;
|
|
2207
|
+
children;
|
|
2125
2208
|
constructor(value, children) {
|
|
2126
2209
|
this.value = value;
|
|
2127
2210
|
this.children = children;
|
|
@@ -2171,6 +2254,7 @@ function nodeChildrenAsMap(node) {
|
|
|
2171
2254
|
* @publicApi
|
|
2172
2255
|
*/
|
|
2173
2256
|
class RouterState extends Tree {
|
|
2257
|
+
snapshot;
|
|
2174
2258
|
/** @internal */
|
|
2175
2259
|
constructor(root,
|
|
2176
2260
|
/** The current snapshot of the router state */
|
|
@@ -2222,6 +2306,35 @@ function createEmptyStateSnapshot(rootComponent) {
|
|
|
2222
2306
|
* @publicApi
|
|
2223
2307
|
*/
|
|
2224
2308
|
class ActivatedRoute {
|
|
2309
|
+
urlSubject;
|
|
2310
|
+
paramsSubject;
|
|
2311
|
+
queryParamsSubject;
|
|
2312
|
+
fragmentSubject;
|
|
2313
|
+
dataSubject;
|
|
2314
|
+
outlet;
|
|
2315
|
+
component;
|
|
2316
|
+
/** The current snapshot of this route */
|
|
2317
|
+
snapshot;
|
|
2318
|
+
/** @internal */
|
|
2319
|
+
_futureSnapshot;
|
|
2320
|
+
/** @internal */
|
|
2321
|
+
_routerState;
|
|
2322
|
+
/** @internal */
|
|
2323
|
+
_paramMap;
|
|
2324
|
+
/** @internal */
|
|
2325
|
+
_queryParamMap;
|
|
2326
|
+
/** An Observable of the resolved route title */
|
|
2327
|
+
title;
|
|
2328
|
+
/** An observable of the URL segments matched by this route. */
|
|
2329
|
+
url;
|
|
2330
|
+
/** An observable of the matrix parameters scoped to this route. */
|
|
2331
|
+
params;
|
|
2332
|
+
/** An observable of the query parameters shared by all the routes. */
|
|
2333
|
+
queryParams;
|
|
2334
|
+
/** An observable of the URL fragment shared by all the routes. */
|
|
2335
|
+
fragment;
|
|
2336
|
+
/** An observable of the static and resolved data of this route. */
|
|
2337
|
+
data;
|
|
2225
2338
|
/** @internal */
|
|
2226
2339
|
constructor(
|
|
2227
2340
|
/** @internal */
|
|
@@ -2370,6 +2483,25 @@ function getInherited(route, parent, paramsInheritanceStrategy = 'emptyOnly') {
|
|
|
2370
2483
|
* @publicApi
|
|
2371
2484
|
*/
|
|
2372
2485
|
class ActivatedRouteSnapshot {
|
|
2486
|
+
url;
|
|
2487
|
+
params;
|
|
2488
|
+
queryParams;
|
|
2489
|
+
fragment;
|
|
2490
|
+
data;
|
|
2491
|
+
outlet;
|
|
2492
|
+
component;
|
|
2493
|
+
/** The configuration used to match this route **/
|
|
2494
|
+
routeConfig;
|
|
2495
|
+
/** @internal */
|
|
2496
|
+
_resolve;
|
|
2497
|
+
/** @internal */
|
|
2498
|
+
_resolvedData;
|
|
2499
|
+
/** @internal */
|
|
2500
|
+
_routerState;
|
|
2501
|
+
/** @internal */
|
|
2502
|
+
_paramMap;
|
|
2503
|
+
/** @internal */
|
|
2504
|
+
_queryParamMap;
|
|
2373
2505
|
/** The resolved route title */
|
|
2374
2506
|
get title() {
|
|
2375
2507
|
// Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be
|
|
@@ -2482,6 +2614,7 @@ class ActivatedRouteSnapshot {
|
|
|
2482
2614
|
* @publicApi
|
|
2483
2615
|
*/
|
|
2484
2616
|
class RouterStateSnapshot extends Tree {
|
|
2617
|
+
url;
|
|
2485
2618
|
/** @internal */
|
|
2486
2619
|
constructor(
|
|
2487
2620
|
/** The url from which this snapshot was created */
|
|
@@ -2616,43 +2749,41 @@ const ROUTER_OUTLET_DATA = new InjectionToken(ngDevMode ? 'RouterOutlet data' :
|
|
|
2616
2749
|
* @publicApi
|
|
2617
2750
|
*/
|
|
2618
2751
|
class RouterOutlet {
|
|
2619
|
-
|
|
2620
|
-
this.activated = null;
|
|
2621
|
-
this._activatedRoute = null;
|
|
2622
|
-
/**
|
|
2623
|
-
* The name of the outlet
|
|
2624
|
-
*
|
|
2625
|
-
*/
|
|
2626
|
-
this.name = PRIMARY_OUTLET;
|
|
2627
|
-
this.activateEvents = new EventEmitter();
|
|
2628
|
-
this.deactivateEvents = new EventEmitter();
|
|
2629
|
-
/**
|
|
2630
|
-
* Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a
|
|
2631
|
-
* previously detached subtree.
|
|
2632
|
-
**/
|
|
2633
|
-
this.attachEvents = new EventEmitter();
|
|
2634
|
-
/**
|
|
2635
|
-
* Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the
|
|
2636
|
-
* subtree.
|
|
2637
|
-
*/
|
|
2638
|
-
this.detachEvents = new EventEmitter();
|
|
2639
|
-
/**
|
|
2640
|
-
* Data that will be provided to the child injector through the `ROUTER_OUTLET_DATA` token.
|
|
2641
|
-
*
|
|
2642
|
-
* When unset, the value of the token is `undefined` by default.
|
|
2643
|
-
*/
|
|
2644
|
-
this.routerOutletData = input(undefined);
|
|
2645
|
-
this.parentContexts = inject(ChildrenOutletContexts);
|
|
2646
|
-
this.location = inject(ViewContainerRef);
|
|
2647
|
-
this.changeDetector = inject(ChangeDetectorRef);
|
|
2648
|
-
this.inputBinder = inject(INPUT_BINDER, { optional: true });
|
|
2649
|
-
/** @nodoc */
|
|
2650
|
-
this.supportsBindingToComponentInputs = true;
|
|
2651
|
-
}
|
|
2752
|
+
activated = null;
|
|
2652
2753
|
/** @internal */
|
|
2653
2754
|
get activatedComponentRef() {
|
|
2654
2755
|
return this.activated;
|
|
2655
2756
|
}
|
|
2757
|
+
_activatedRoute = null;
|
|
2758
|
+
/**
|
|
2759
|
+
* The name of the outlet
|
|
2760
|
+
*
|
|
2761
|
+
*/
|
|
2762
|
+
name = PRIMARY_OUTLET;
|
|
2763
|
+
activateEvents = new EventEmitter();
|
|
2764
|
+
deactivateEvents = new EventEmitter();
|
|
2765
|
+
/**
|
|
2766
|
+
* Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a
|
|
2767
|
+
* previously detached subtree.
|
|
2768
|
+
**/
|
|
2769
|
+
attachEvents = new EventEmitter();
|
|
2770
|
+
/**
|
|
2771
|
+
* Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the
|
|
2772
|
+
* subtree.
|
|
2773
|
+
*/
|
|
2774
|
+
detachEvents = new EventEmitter();
|
|
2775
|
+
/**
|
|
2776
|
+
* Data that will be provided to the child injector through the `ROUTER_OUTLET_DATA` token.
|
|
2777
|
+
*
|
|
2778
|
+
* When unset, the value of the token is `undefined` by default.
|
|
2779
|
+
*/
|
|
2780
|
+
routerOutletData = input(undefined);
|
|
2781
|
+
parentContexts = inject(ChildrenOutletContexts);
|
|
2782
|
+
location = inject(ViewContainerRef);
|
|
2783
|
+
changeDetector = inject(ChangeDetectorRef);
|
|
2784
|
+
inputBinder = inject(INPUT_BINDER, { optional: true });
|
|
2785
|
+
/** @nodoc */
|
|
2786
|
+
supportsBindingToComponentInputs = true;
|
|
2656
2787
|
/** @nodoc */
|
|
2657
2788
|
ngOnChanges(changes) {
|
|
2658
2789
|
if (changes['name']) {
|
|
@@ -2782,10 +2913,10 @@ class RouterOutlet {
|
|
|
2782
2913
|
this.inputBinder?.bindActivatedRouteToOutletComponent(this);
|
|
2783
2914
|
this.activateEvents.emit(this.activated.instance);
|
|
2784
2915
|
}
|
|
2785
|
-
static
|
|
2786
|
-
static
|
|
2916
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2917
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0-rc.0", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, routerOutletData: { classPropertyName: "routerOutletData", publicName: "routerOutletData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 });
|
|
2787
2918
|
}
|
|
2788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
2919
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterOutlet, decorators: [{
|
|
2789
2920
|
type: Directive,
|
|
2790
2921
|
args: [{
|
|
2791
2922
|
selector: 'router-outlet',
|
|
@@ -2808,6 +2939,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
|
|
|
2808
2939
|
args: ['detach']
|
|
2809
2940
|
}] } });
|
|
2810
2941
|
class OutletInjector {
|
|
2942
|
+
route;
|
|
2943
|
+
childContexts;
|
|
2944
|
+
parent;
|
|
2945
|
+
outletData;
|
|
2811
2946
|
/**
|
|
2812
2947
|
* This injector has a special handing for the `ActivatedRoute` and
|
|
2813
2948
|
* `ChildrenOutletContexts` tokens: it returns corresponding values for those
|
|
@@ -2861,9 +2996,7 @@ const INPUT_BINDER = new InjectionToken('');
|
|
|
2861
2996
|
* the subscriptions are cleaned up.
|
|
2862
2997
|
*/
|
|
2863
2998
|
class RoutedComponentInputBinder {
|
|
2864
|
-
|
|
2865
|
-
this.outletDataSubscriptions = new Map();
|
|
2866
|
-
}
|
|
2999
|
+
outletDataSubscriptions = new Map();
|
|
2867
3000
|
bindActivatedRouteToOutletComponent(outlet) {
|
|
2868
3001
|
this.unsubscribeFromRouteData(outlet);
|
|
2869
3002
|
this.subscribeToRouteData(outlet);
|
|
@@ -2912,10 +3045,10 @@ class RoutedComponentInputBinder {
|
|
|
2912
3045
|
});
|
|
2913
3046
|
this.outletDataSubscriptions.set(outlet, dataSubscription);
|
|
2914
3047
|
}
|
|
2915
|
-
static
|
|
2916
|
-
static
|
|
3048
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3049
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder });
|
|
2917
3050
|
}
|
|
2918
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
3051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
|
|
2919
3052
|
type: Injectable
|
|
2920
3053
|
}] });
|
|
2921
3054
|
|
|
@@ -2993,6 +3126,8 @@ function createActivatedRoute(c) {
|
|
|
2993
3126
|
* @publicApi
|
|
2994
3127
|
*/
|
|
2995
3128
|
class RedirectCommand {
|
|
3129
|
+
redirectTo;
|
|
3130
|
+
navigationBehaviorOptions;
|
|
2996
3131
|
constructor(redirectTo, navigationBehaviorOptions) {
|
|
2997
3132
|
this.redirectTo = redirectTo;
|
|
2998
3133
|
this.navigationBehaviorOptions = navigationBehaviorOptions;
|
|
@@ -3029,6 +3164,11 @@ const activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBin
|
|
|
3029
3164
|
return t;
|
|
3030
3165
|
});
|
|
3031
3166
|
class ActivateRoutes {
|
|
3167
|
+
routeReuseStrategy;
|
|
3168
|
+
futureState;
|
|
3169
|
+
currState;
|
|
3170
|
+
forwardEvent;
|
|
3171
|
+
inputBindingEnabled;
|
|
3032
3172
|
constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) {
|
|
3033
3173
|
this.routeReuseStrategy = routeReuseStrategy;
|
|
3034
3174
|
this.futureState = futureState;
|
|
@@ -3203,12 +3343,16 @@ class ActivateRoutes {
|
|
|
3203
3343
|
}
|
|
3204
3344
|
|
|
3205
3345
|
class CanActivate {
|
|
3346
|
+
path;
|
|
3347
|
+
route;
|
|
3206
3348
|
constructor(path) {
|
|
3207
3349
|
this.path = path;
|
|
3208
3350
|
this.route = this.path[this.path.length - 1];
|
|
3209
3351
|
}
|
|
3210
3352
|
}
|
|
3211
3353
|
class CanDeactivate {
|
|
3354
|
+
component;
|
|
3355
|
+
route;
|
|
3212
3356
|
constructor(component, route) {
|
|
3213
3357
|
this.component = component;
|
|
3214
3358
|
this.route = route;
|
|
@@ -3552,11 +3696,13 @@ function runCanMatchGuards(injector, route, segments, urlSerializer) {
|
|
|
3552
3696
|
}
|
|
3553
3697
|
|
|
3554
3698
|
class NoMatch {
|
|
3699
|
+
segmentGroup;
|
|
3555
3700
|
constructor(segmentGroup) {
|
|
3556
3701
|
this.segmentGroup = segmentGroup || null;
|
|
3557
3702
|
}
|
|
3558
3703
|
}
|
|
3559
3704
|
class AbsoluteRedirect extends Error {
|
|
3705
|
+
urlTree;
|
|
3560
3706
|
constructor(urlTree) {
|
|
3561
3707
|
super();
|
|
3562
3708
|
this.urlTree = urlTree;
|
|
@@ -3577,6 +3723,8 @@ function canLoadFails(route) {
|
|
|
3577
3723
|
`Cannot load children because the guard of the route "path: '${route.path}'" returned false`, NavigationCancellationCode.GuardRejected));
|
|
3578
3724
|
}
|
|
3579
3725
|
class ApplyRedirects {
|
|
3726
|
+
urlSerializer;
|
|
3727
|
+
urlTree;
|
|
3580
3728
|
constructor(urlSerializer, urlTree) {
|
|
3581
3729
|
this.urlSerializer = urlSerializer;
|
|
3582
3730
|
this.urlTree = urlTree;
|
|
@@ -3787,6 +3935,16 @@ function recognize$1(injector, configLoader, rootComponentType, config, urlTree,
|
|
|
3787
3935
|
}
|
|
3788
3936
|
const MAX_ALLOWED_REDIRECTS = 31;
|
|
3789
3937
|
class Recognizer {
|
|
3938
|
+
injector;
|
|
3939
|
+
configLoader;
|
|
3940
|
+
rootComponentType;
|
|
3941
|
+
config;
|
|
3942
|
+
urlTree;
|
|
3943
|
+
paramsInheritanceStrategy;
|
|
3944
|
+
urlSerializer;
|
|
3945
|
+
applyRedirects;
|
|
3946
|
+
absoluteRedirectCount = 0;
|
|
3947
|
+
allowRedirects = true;
|
|
3790
3948
|
constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) {
|
|
3791
3949
|
this.injector = injector;
|
|
3792
3950
|
this.configLoader = configLoader;
|
|
@@ -3796,8 +3954,6 @@ class Recognizer {
|
|
|
3796
3954
|
this.paramsInheritanceStrategy = paramsInheritanceStrategy;
|
|
3797
3955
|
this.urlSerializer = urlSerializer;
|
|
3798
3956
|
this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree);
|
|
3799
|
-
this.absoluteRedirectCount = 0;
|
|
3800
|
-
this.allowRedirects = true;
|
|
3801
3957
|
}
|
|
3802
3958
|
noMatchError(e) {
|
|
3803
3959
|
return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, typeof ngDevMode === 'undefined' || ngDevMode
|
|
@@ -4228,10 +4384,10 @@ class TitleStrategy {
|
|
|
4228
4384
|
getResolvedTitleForRoute(snapshot) {
|
|
4229
4385
|
return snapshot.data[RouteTitleKey];
|
|
4230
4386
|
}
|
|
4231
|
-
static
|
|
4232
|
-
static
|
|
4387
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4388
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) });
|
|
4233
4389
|
}
|
|
4234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
4390
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: TitleStrategy, decorators: [{
|
|
4235
4391
|
type: Injectable,
|
|
4236
4392
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
|
|
4237
4393
|
}] });
|
|
@@ -4239,6 +4395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
|
|
|
4239
4395
|
* The default `TitleStrategy` used by the router that updates the title using the `Title` service.
|
|
4240
4396
|
*/
|
|
4241
4397
|
class DefaultTitleStrategy extends TitleStrategy {
|
|
4398
|
+
title;
|
|
4242
4399
|
constructor(title) {
|
|
4243
4400
|
super();
|
|
4244
4401
|
this.title = title;
|
|
@@ -4254,10 +4411,10 @@ class DefaultTitleStrategy extends TitleStrategy {
|
|
|
4254
4411
|
this.title.setTitle(title);
|
|
4255
4412
|
}
|
|
4256
4413
|
}
|
|
4257
|
-
static
|
|
4258
|
-
static
|
|
4414
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4415
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' });
|
|
4259
4416
|
}
|
|
4260
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
4417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
|
|
4261
4418
|
type: Injectable,
|
|
4262
4419
|
args: [{ providedIn: 'root' }]
|
|
4263
4420
|
}], ctorParameters: () => [{ type: i1.Title }] });
|
|
@@ -4282,10 +4439,10 @@ const ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === 'undefined'
|
|
|
4282
4439
|
* to this `EmptyOutletComponent`.
|
|
4283
4440
|
*/
|
|
4284
4441
|
class ɵEmptyOutletComponent {
|
|
4285
|
-
static
|
|
4286
|
-
static
|
|
4442
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4443
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", 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", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
4287
4444
|
}
|
|
4288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
4445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
|
|
4289
4446
|
type: Component,
|
|
4290
4447
|
args: [{
|
|
4291
4448
|
template: `<router-outlet></router-outlet>`,
|
|
@@ -4321,11 +4478,11 @@ function standardizeConfig(r) {
|
|
|
4321
4478
|
*/
|
|
4322
4479
|
const ROUTES = new InjectionToken(ngDevMode ? 'ROUTES' : '');
|
|
4323
4480
|
class RouterConfigLoader {
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4481
|
+
componentLoaders = new WeakMap();
|
|
4482
|
+
childrenLoaders = new WeakMap();
|
|
4483
|
+
onLoadStartListener;
|
|
4484
|
+
onLoadEndListener;
|
|
4485
|
+
compiler = inject(Compiler);
|
|
4329
4486
|
loadComponent(route) {
|
|
4330
4487
|
if (this.componentLoaders.get(route)) {
|
|
4331
4488
|
return this.componentLoaders.get(route);
|
|
@@ -4370,10 +4527,10 @@ class RouterConfigLoader {
|
|
|
4370
4527
|
this.childrenLoaders.set(route, loader);
|
|
4371
4528
|
return loader;
|
|
4372
4529
|
}
|
|
4373
|
-
static
|
|
4374
|
-
static
|
|
4530
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4531
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' });
|
|
4375
4532
|
}
|
|
4376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
4533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterConfigLoader, decorators: [{
|
|
4377
4534
|
type: Injectable,
|
|
4378
4535
|
args: [{ providedIn: 'root' }]
|
|
4379
4536
|
}] });
|
|
@@ -4440,10 +4597,10 @@ function maybeUnwrapDefaultExport(input) {
|
|
|
4440
4597
|
* @publicApi
|
|
4441
4598
|
*/
|
|
4442
4599
|
class UrlHandlingStrategy {
|
|
4443
|
-
static
|
|
4444
|
-
static
|
|
4600
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4601
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) });
|
|
4445
4602
|
}
|
|
4446
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
4603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
|
|
4447
4604
|
type: Injectable,
|
|
4448
4605
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
|
|
4449
4606
|
}] });
|
|
@@ -4460,10 +4617,10 @@ class DefaultUrlHandlingStrategy {
|
|
|
4460
4617
|
merge(newUrlPart, wholeUrl) {
|
|
4461
4618
|
return newUrlPart;
|
|
4462
4619
|
}
|
|
4463
|
-
static
|
|
4464
|
-
static
|
|
4620
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4621
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' });
|
|
4465
4622
|
}
|
|
4466
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
4623
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
|
|
4467
4624
|
type: Injectable,
|
|
4468
4625
|
args: [{ providedIn: 'root' }]
|
|
4469
4626
|
}] });
|
|
@@ -4522,45 +4679,46 @@ function createRenderPromise(injector) {
|
|
|
4522
4679
|
|
|
4523
4680
|
const NAVIGATION_ERROR_HANDLER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'navigation error handler' : '');
|
|
4524
4681
|
class NavigationTransitions {
|
|
4682
|
+
currentNavigation = null;
|
|
4683
|
+
currentTransition = null;
|
|
4684
|
+
lastSuccessfulNavigation = null;
|
|
4685
|
+
/**
|
|
4686
|
+
* These events are used to communicate back to the Router about the state of the transition. The
|
|
4687
|
+
* Router wants to respond to these events in various ways. Because the `NavigationTransition`
|
|
4688
|
+
* class is not public, this event subject is not publicly exposed.
|
|
4689
|
+
*/
|
|
4690
|
+
events = new Subject();
|
|
4691
|
+
/**
|
|
4692
|
+
* Used to abort the current transition with an error.
|
|
4693
|
+
*/
|
|
4694
|
+
transitionAbortSubject = new Subject();
|
|
4695
|
+
configLoader = inject(RouterConfigLoader);
|
|
4696
|
+
environmentInjector = inject(EnvironmentInjector);
|
|
4697
|
+
urlSerializer = inject(UrlSerializer);
|
|
4698
|
+
rootContexts = inject(ChildrenOutletContexts);
|
|
4699
|
+
location = inject(Location);
|
|
4700
|
+
inputBindingEnabled = inject(INPUT_BINDER, { optional: true }) !== null;
|
|
4701
|
+
titleStrategy = inject(TitleStrategy);
|
|
4702
|
+
options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
4703
|
+
paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';
|
|
4704
|
+
urlHandlingStrategy = inject(UrlHandlingStrategy);
|
|
4705
|
+
createViewTransition = inject(CREATE_VIEW_TRANSITION, { optional: true });
|
|
4706
|
+
navigationErrorHandler = inject(NAVIGATION_ERROR_HANDLER, { optional: true });
|
|
4707
|
+
navigationId = 0;
|
|
4525
4708
|
get hasRequestedNavigation() {
|
|
4526
4709
|
return this.navigationId !== 0;
|
|
4527
4710
|
}
|
|
4711
|
+
transitions;
|
|
4712
|
+
/**
|
|
4713
|
+
* Hook that enables you to pause navigation after the preactivation phase.
|
|
4714
|
+
* Used by `RouterModule`.
|
|
4715
|
+
*
|
|
4716
|
+
* @internal
|
|
4717
|
+
*/
|
|
4718
|
+
afterPreactivation = () => of(void 0);
|
|
4719
|
+
/** @internal */
|
|
4720
|
+
rootComponentType = null;
|
|
4528
4721
|
constructor() {
|
|
4529
|
-
this.currentNavigation = null;
|
|
4530
|
-
this.currentTransition = null;
|
|
4531
|
-
this.lastSuccessfulNavigation = null;
|
|
4532
|
-
/**
|
|
4533
|
-
* These events are used to communicate back to the Router about the state of the transition. The
|
|
4534
|
-
* Router wants to respond to these events in various ways. Because the `NavigationTransition`
|
|
4535
|
-
* class is not public, this event subject is not publicly exposed.
|
|
4536
|
-
*/
|
|
4537
|
-
this.events = new Subject();
|
|
4538
|
-
/**
|
|
4539
|
-
* Used to abort the current transition with an error.
|
|
4540
|
-
*/
|
|
4541
|
-
this.transitionAbortSubject = new Subject();
|
|
4542
|
-
this.configLoader = inject(RouterConfigLoader);
|
|
4543
|
-
this.environmentInjector = inject(EnvironmentInjector);
|
|
4544
|
-
this.urlSerializer = inject(UrlSerializer);
|
|
4545
|
-
this.rootContexts = inject(ChildrenOutletContexts);
|
|
4546
|
-
this.location = inject(Location);
|
|
4547
|
-
this.inputBindingEnabled = inject(INPUT_BINDER, { optional: true }) !== null;
|
|
4548
|
-
this.titleStrategy = inject(TitleStrategy);
|
|
4549
|
-
this.options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
4550
|
-
this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';
|
|
4551
|
-
this.urlHandlingStrategy = inject(UrlHandlingStrategy);
|
|
4552
|
-
this.createViewTransition = inject(CREATE_VIEW_TRANSITION, { optional: true });
|
|
4553
|
-
this.navigationErrorHandler = inject(NAVIGATION_ERROR_HANDLER, { optional: true });
|
|
4554
|
-
this.navigationId = 0;
|
|
4555
|
-
/**
|
|
4556
|
-
* Hook that enables you to pause navigation after the preactivation phase.
|
|
4557
|
-
* Used by `RouterModule`.
|
|
4558
|
-
*
|
|
4559
|
-
* @internal
|
|
4560
|
-
*/
|
|
4561
|
-
this.afterPreactivation = () => of(void 0);
|
|
4562
|
-
/** @internal */
|
|
4563
|
-
this.rootComponentType = null;
|
|
4564
4722
|
const onLoadStart = (r) => this.events.next(new RouteConfigLoadStart(r));
|
|
4565
4723
|
const onLoadEnd = (r) => this.events.next(new RouteConfigLoadEnd(r));
|
|
4566
4724
|
this.configLoader.onLoadEndListener = onLoadEnd;
|
|
@@ -4915,10 +5073,10 @@ class NavigationTransitions {
|
|
|
4915
5073
|
return (currentBrowserUrl.toString() !== targetBrowserUrl?.toString() &&
|
|
4916
5074
|
!this.currentNavigation?.extras.skipLocationChange);
|
|
4917
5075
|
}
|
|
4918
|
-
static
|
|
4919
|
-
static
|
|
5076
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5077
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: NavigationTransitions, providedIn: 'root' });
|
|
4920
5078
|
}
|
|
4921
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
5079
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: NavigationTransitions, decorators: [{
|
|
4922
5080
|
type: Injectable,
|
|
4923
5081
|
args: [{ providedIn: 'root' }]
|
|
4924
5082
|
}], ctorParameters: () => [] });
|
|
@@ -4934,10 +5092,10 @@ function isBrowserTriggeredNavigation(source) {
|
|
|
4934
5092
|
* @publicApi
|
|
4935
5093
|
*/
|
|
4936
5094
|
class RouteReuseStrategy {
|
|
4937
|
-
static
|
|
4938
|
-
static
|
|
5095
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5096
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) });
|
|
4939
5097
|
}
|
|
4940
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
5098
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouteReuseStrategy, decorators: [{
|
|
4941
5099
|
type: Injectable,
|
|
4942
5100
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
|
|
4943
5101
|
}] });
|
|
@@ -4988,52 +5146,47 @@ class BaseRouteReuseStrategy {
|
|
|
4988
5146
|
}
|
|
4989
5147
|
}
|
|
4990
5148
|
class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
|
|
4991
|
-
static
|
|
4992
|
-
static
|
|
5149
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
5150
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' });
|
|
4993
5151
|
}
|
|
4994
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
5152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
|
|
4995
5153
|
type: Injectable,
|
|
4996
5154
|
args: [{ providedIn: 'root' }]
|
|
4997
5155
|
}] });
|
|
4998
5156
|
|
|
4999
5157
|
class StateManager {
|
|
5000
|
-
static
|
|
5001
|
-
static
|
|
5158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5159
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) });
|
|
5002
5160
|
}
|
|
5003
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
5161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: StateManager, decorators: [{
|
|
5004
5162
|
type: Injectable,
|
|
5005
5163
|
args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
|
|
5006
5164
|
}] });
|
|
5007
5165
|
class HistoryStateManager extends StateManager {
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';
|
|
5016
|
-
this.currentUrlTree = new UrlTree();
|
|
5017
|
-
this.rawUrlTree = this.currentUrlTree;
|
|
5018
|
-
/**
|
|
5019
|
-
* The id of the currently active page in the router.
|
|
5020
|
-
* Updated to the transition's target id on a successful navigation.
|
|
5021
|
-
*
|
|
5022
|
-
* This is used to track what page the router last activated. When an attempted navigation fails,
|
|
5023
|
-
* the router can then use this to compute how to restore the state back to the previously active
|
|
5024
|
-
* page.
|
|
5025
|
-
*/
|
|
5026
|
-
this.currentPageId = 0;
|
|
5027
|
-
this.lastSuccessfulId = -1;
|
|
5028
|
-
this.routerState = createEmptyState(null);
|
|
5029
|
-
this.stateMemento = this.createStateMemento();
|
|
5030
|
-
}
|
|
5166
|
+
location = inject(Location);
|
|
5167
|
+
urlSerializer = inject(UrlSerializer);
|
|
5168
|
+
options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
5169
|
+
canceledNavigationResolution = this.options.canceledNavigationResolution || 'replace';
|
|
5170
|
+
urlHandlingStrategy = inject(UrlHandlingStrategy);
|
|
5171
|
+
urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';
|
|
5172
|
+
currentUrlTree = new UrlTree();
|
|
5031
5173
|
getCurrentUrlTree() {
|
|
5032
5174
|
return this.currentUrlTree;
|
|
5033
5175
|
}
|
|
5176
|
+
rawUrlTree = this.currentUrlTree;
|
|
5034
5177
|
getRawUrlTree() {
|
|
5035
5178
|
return this.rawUrlTree;
|
|
5036
5179
|
}
|
|
5180
|
+
/**
|
|
5181
|
+
* The id of the currently active page in the router.
|
|
5182
|
+
* Updated to the transition's target id on a successful navigation.
|
|
5183
|
+
*
|
|
5184
|
+
* This is used to track what page the router last activated. When an attempted navigation fails,
|
|
5185
|
+
* the router can then use this to compute how to restore the state back to the previously active
|
|
5186
|
+
* page.
|
|
5187
|
+
*/
|
|
5188
|
+
currentPageId = 0;
|
|
5189
|
+
lastSuccessfulId = -1;
|
|
5037
5190
|
restoredState() {
|
|
5038
5191
|
return this.location.getState();
|
|
5039
5192
|
}
|
|
@@ -5048,9 +5201,11 @@ class HistoryStateManager extends StateManager {
|
|
|
5048
5201
|
}
|
|
5049
5202
|
return this.restoredState()?.ɵrouterPageId ?? this.currentPageId;
|
|
5050
5203
|
}
|
|
5204
|
+
routerState = createEmptyState(null);
|
|
5051
5205
|
getRouterState() {
|
|
5052
5206
|
return this.routerState;
|
|
5053
5207
|
}
|
|
5208
|
+
stateMemento = this.createStateMemento();
|
|
5054
5209
|
createStateMemento() {
|
|
5055
5210
|
return {
|
|
5056
5211
|
rawUrlTree: this.rawUrlTree,
|
|
@@ -5173,10 +5328,10 @@ class HistoryStateManager extends StateManager {
|
|
|
5173
5328
|
}
|
|
5174
5329
|
return { navigationId };
|
|
5175
5330
|
}
|
|
5176
|
-
static
|
|
5177
|
-
static
|
|
5331
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
5332
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HistoryStateManager, providedIn: 'root' });
|
|
5178
5333
|
}
|
|
5179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
5334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HistoryStateManager, decorators: [{
|
|
5180
5335
|
type: Injectable,
|
|
5181
5336
|
args: [{ providedIn: 'root' }]
|
|
5182
5337
|
}] });
|
|
@@ -5260,6 +5415,23 @@ class Router {
|
|
|
5260
5415
|
get rawUrlTree() {
|
|
5261
5416
|
return this.stateManager.getRawUrlTree();
|
|
5262
5417
|
}
|
|
5418
|
+
disposed = false;
|
|
5419
|
+
nonRouterCurrentEntryChangeSubscription;
|
|
5420
|
+
console = inject(ɵConsole);
|
|
5421
|
+
stateManager = inject(StateManager);
|
|
5422
|
+
options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
5423
|
+
pendingTasks = inject(ɵPendingTasks);
|
|
5424
|
+
urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';
|
|
5425
|
+
navigationTransitions = inject(NavigationTransitions);
|
|
5426
|
+
urlSerializer = inject(UrlSerializer);
|
|
5427
|
+
location = inject(Location);
|
|
5428
|
+
urlHandlingStrategy = inject(UrlHandlingStrategy);
|
|
5429
|
+
/**
|
|
5430
|
+
* The private `Subject` type for the public events exposed in the getter. This is used internally
|
|
5431
|
+
* to push events to. The separate field allows us to expose separate types in the public API
|
|
5432
|
+
* (i.e., an Observable rather than the Subject).
|
|
5433
|
+
*/
|
|
5434
|
+
_events = new Subject();
|
|
5263
5435
|
/**
|
|
5264
5436
|
* An event stream for routing events.
|
|
5265
5437
|
*/
|
|
@@ -5276,54 +5448,37 @@ class Router {
|
|
|
5276
5448
|
get routerState() {
|
|
5277
5449
|
return this.stateManager.getRouterState();
|
|
5278
5450
|
}
|
|
5451
|
+
/**
|
|
5452
|
+
* True if at least one navigation event has occurred,
|
|
5453
|
+
* false otherwise.
|
|
5454
|
+
*/
|
|
5455
|
+
navigated = false;
|
|
5456
|
+
/**
|
|
5457
|
+
* A strategy for re-using routes.
|
|
5458
|
+
*
|
|
5459
|
+
* @deprecated Configure using `providers` instead:
|
|
5460
|
+
* `{provide: RouteReuseStrategy, useClass: MyStrategy}`.
|
|
5461
|
+
*/
|
|
5462
|
+
routeReuseStrategy = inject(RouteReuseStrategy);
|
|
5463
|
+
/**
|
|
5464
|
+
* How to handle a navigation request to the current URL.
|
|
5465
|
+
*
|
|
5466
|
+
*
|
|
5467
|
+
* @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.
|
|
5468
|
+
* @see {@link withRouterConfig}
|
|
5469
|
+
* @see {@link provideRouter}
|
|
5470
|
+
* @see {@link RouterModule}
|
|
5471
|
+
*/
|
|
5472
|
+
onSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';
|
|
5473
|
+
config = inject(ROUTES, { optional: true })?.flat() ?? [];
|
|
5474
|
+
/**
|
|
5475
|
+
* Indicates whether the application has opted in to binding Router data to component inputs.
|
|
5476
|
+
*
|
|
5477
|
+
* This option is enabled by the `withComponentInputBinding` feature of `provideRouter` or
|
|
5478
|
+
* `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.
|
|
5479
|
+
*/
|
|
5480
|
+
componentInputBindingEnabled = !!inject(INPUT_BINDER, { optional: true });
|
|
5279
5481
|
constructor() {
|
|
5280
|
-
this.disposed = false;
|
|
5281
|
-
this.console = inject(ɵConsole);
|
|
5282
|
-
this.stateManager = inject(StateManager);
|
|
5283
|
-
this.options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
5284
|
-
this.pendingTasks = inject(ɵPendingTasks);
|
|
5285
|
-
this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';
|
|
5286
|
-
this.navigationTransitions = inject(NavigationTransitions);
|
|
5287
|
-
this.urlSerializer = inject(UrlSerializer);
|
|
5288
|
-
this.location = inject(Location);
|
|
5289
|
-
this.urlHandlingStrategy = inject(UrlHandlingStrategy);
|
|
5290
|
-
/**
|
|
5291
|
-
* The private `Subject` type for the public events exposed in the getter. This is used internally
|
|
5292
|
-
* to push events to. The separate field allows us to expose separate types in the public API
|
|
5293
|
-
* (i.e., an Observable rather than the Subject).
|
|
5294
|
-
*/
|
|
5295
|
-
this._events = new Subject();
|
|
5296
|
-
/**
|
|
5297
|
-
* True if at least one navigation event has occurred,
|
|
5298
|
-
* false otherwise.
|
|
5299
|
-
*/
|
|
5300
|
-
this.navigated = false;
|
|
5301
|
-
/**
|
|
5302
|
-
* A strategy for re-using routes.
|
|
5303
|
-
*
|
|
5304
|
-
* @deprecated Configure using `providers` instead:
|
|
5305
|
-
* `{provide: RouteReuseStrategy, useClass: MyStrategy}`.
|
|
5306
|
-
*/
|
|
5307
|
-
this.routeReuseStrategy = inject(RouteReuseStrategy);
|
|
5308
|
-
/**
|
|
5309
|
-
* How to handle a navigation request to the current URL.
|
|
5310
|
-
*
|
|
5311
|
-
*
|
|
5312
|
-
* @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.
|
|
5313
|
-
* @see {@link withRouterConfig}
|
|
5314
|
-
* @see {@link provideRouter}
|
|
5315
|
-
* @see {@link RouterModule}
|
|
5316
|
-
*/
|
|
5317
|
-
this.onSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';
|
|
5318
|
-
this.config = inject(ROUTES, { optional: true })?.flat() ?? [];
|
|
5319
|
-
/**
|
|
5320
|
-
* Indicates whether the application has opted in to binding Router data to component inputs.
|
|
5321
|
-
*
|
|
5322
|
-
* This option is enabled by the `withComponentInputBinding` feature of `provideRouter` or
|
|
5323
|
-
* `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.
|
|
5324
|
-
*/
|
|
5325
|
-
this.componentInputBindingEnabled = !!inject(INPUT_BINDER, { optional: true });
|
|
5326
|
-
this.eventsSubscription = new Subscription();
|
|
5327
5482
|
this.resetConfig(this.config);
|
|
5328
5483
|
this.navigationTransitions
|
|
5329
5484
|
.setupNavigations(this, this.currentUrlTree, this.routerState)
|
|
@@ -5334,6 +5489,7 @@ class Router {
|
|
|
5334
5489
|
});
|
|
5335
5490
|
this.subscribeToNavigationEvents();
|
|
5336
5491
|
}
|
|
5492
|
+
eventsSubscription = new Subscription();
|
|
5337
5493
|
subscribeToNavigationEvents() {
|
|
5338
5494
|
const subscription = this.navigationTransitions.events.subscribe((e) => {
|
|
5339
5495
|
try {
|
|
@@ -5743,10 +5899,10 @@ class Router {
|
|
|
5743
5899
|
return Promise.reject(e);
|
|
5744
5900
|
});
|
|
5745
5901
|
}
|
|
5746
|
-
static
|
|
5747
|
-
static
|
|
5902
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5903
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Router, providedIn: 'root' });
|
|
5748
5904
|
}
|
|
5749
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
5905
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Router, decorators: [{
|
|
5750
5906
|
type: Injectable,
|
|
5751
5907
|
args: [{ providedIn: 'root' }]
|
|
5752
5908
|
}], ctorParameters: () => [] });
|
|
@@ -5864,6 +6020,72 @@ function isPublicRouterEvent(e) {
|
|
|
5864
6020
|
* @publicApi
|
|
5865
6021
|
*/
|
|
5866
6022
|
class RouterLink {
|
|
6023
|
+
router;
|
|
6024
|
+
route;
|
|
6025
|
+
tabIndexAttribute;
|
|
6026
|
+
renderer;
|
|
6027
|
+
el;
|
|
6028
|
+
locationStrategy;
|
|
6029
|
+
/**
|
|
6030
|
+
* Represents an `href` attribute value applied to a host element,
|
|
6031
|
+
* when a host element is `<a>`. For other tags, the value is `null`.
|
|
6032
|
+
*/
|
|
6033
|
+
href = null;
|
|
6034
|
+
/**
|
|
6035
|
+
* Represents the `target` attribute on a host element.
|
|
6036
|
+
* This is only used when the host element is an `<a>` tag.
|
|
6037
|
+
*/
|
|
6038
|
+
target;
|
|
6039
|
+
/**
|
|
6040
|
+
* Passed to {@link Router#createUrlTree} as part of the
|
|
6041
|
+
* `UrlCreationOptions`.
|
|
6042
|
+
* @see {@link UrlCreationOptions#queryParams}
|
|
6043
|
+
* @see {@link Router#createUrlTree}
|
|
6044
|
+
*/
|
|
6045
|
+
queryParams;
|
|
6046
|
+
/**
|
|
6047
|
+
* Passed to {@link Router#createUrlTree} as part of the
|
|
6048
|
+
* `UrlCreationOptions`.
|
|
6049
|
+
* @see {@link UrlCreationOptions#fragment}
|
|
6050
|
+
* @see {@link Router#createUrlTree}
|
|
6051
|
+
*/
|
|
6052
|
+
fragment;
|
|
6053
|
+
/**
|
|
6054
|
+
* Passed to {@link Router#createUrlTree} as part of the
|
|
6055
|
+
* `UrlCreationOptions`.
|
|
6056
|
+
* @see {@link UrlCreationOptions#queryParamsHandling}
|
|
6057
|
+
* @see {@link Router#createUrlTree}
|
|
6058
|
+
*/
|
|
6059
|
+
queryParamsHandling;
|
|
6060
|
+
/**
|
|
6061
|
+
* Passed to {@link Router#navigateByUrl} as part of the
|
|
6062
|
+
* `NavigationBehaviorOptions`.
|
|
6063
|
+
* @see {@link NavigationBehaviorOptions#state}
|
|
6064
|
+
* @see {@link Router#navigateByUrl}
|
|
6065
|
+
*/
|
|
6066
|
+
state;
|
|
6067
|
+
/**
|
|
6068
|
+
* Passed to {@link Router#navigateByUrl} as part of the
|
|
6069
|
+
* `NavigationBehaviorOptions`.
|
|
6070
|
+
* @see {@link NavigationBehaviorOptions#info}
|
|
6071
|
+
* @see {@link Router#navigateByUrl}
|
|
6072
|
+
*/
|
|
6073
|
+
info;
|
|
6074
|
+
/**
|
|
6075
|
+
* Passed to {@link Router#createUrlTree} as part of the
|
|
6076
|
+
* `UrlCreationOptions`.
|
|
6077
|
+
* Specify a value here when you do not want to use the default value
|
|
6078
|
+
* for `routerLink`, which is the current activated route.
|
|
6079
|
+
* Note that a value of `undefined` here will use the `routerLink` default.
|
|
6080
|
+
* @see {@link UrlCreationOptions#relativeTo}
|
|
6081
|
+
* @see {@link Router#createUrlTree}
|
|
6082
|
+
*/
|
|
6083
|
+
relativeTo;
|
|
6084
|
+
/** Whether a host element is an `<a>` tag. */
|
|
6085
|
+
isAnchorElement;
|
|
6086
|
+
subscription;
|
|
6087
|
+
/** @internal */
|
|
6088
|
+
onChanges = new Subject();
|
|
5867
6089
|
constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) {
|
|
5868
6090
|
this.router = router;
|
|
5869
6091
|
this.route = route;
|
|
@@ -5871,35 +6093,6 @@ class RouterLink {
|
|
|
5871
6093
|
this.renderer = renderer;
|
|
5872
6094
|
this.el = el;
|
|
5873
6095
|
this.locationStrategy = locationStrategy;
|
|
5874
|
-
/**
|
|
5875
|
-
* Represents an `href` attribute value applied to a host element,
|
|
5876
|
-
* when a host element is `<a>`. For other tags, the value is `null`.
|
|
5877
|
-
*/
|
|
5878
|
-
this.href = null;
|
|
5879
|
-
/** @internal */
|
|
5880
|
-
this.onChanges = new Subject();
|
|
5881
|
-
/**
|
|
5882
|
-
* Passed to {@link Router#createUrlTree} as part of the
|
|
5883
|
-
* `UrlCreationOptions`.
|
|
5884
|
-
* @see {@link UrlCreationOptions#preserveFragment}
|
|
5885
|
-
* @see {@link Router#createUrlTree}
|
|
5886
|
-
*/
|
|
5887
|
-
this.preserveFragment = false;
|
|
5888
|
-
/**
|
|
5889
|
-
* Passed to {@link Router#navigateByUrl} as part of the
|
|
5890
|
-
* `NavigationBehaviorOptions`.
|
|
5891
|
-
* @see {@link NavigationBehaviorOptions#skipLocationChange}
|
|
5892
|
-
* @see {@link Router#navigateByUrl}
|
|
5893
|
-
*/
|
|
5894
|
-
this.skipLocationChange = false;
|
|
5895
|
-
/**
|
|
5896
|
-
* Passed to {@link Router#navigateByUrl} as part of the
|
|
5897
|
-
* `NavigationBehaviorOptions`.
|
|
5898
|
-
* @see {@link NavigationBehaviorOptions#replaceUrl}
|
|
5899
|
-
* @see {@link Router#navigateByUrl}
|
|
5900
|
-
*/
|
|
5901
|
-
this.replaceUrl = false;
|
|
5902
|
-
this.routerLinkInput = null;
|
|
5903
6096
|
const tagName = el.nativeElement.tagName?.toLowerCase();
|
|
5904
6097
|
this.isAnchorElement = tagName === 'a' || tagName === 'area';
|
|
5905
6098
|
if (this.isAnchorElement) {
|
|
@@ -5913,6 +6106,27 @@ class RouterLink {
|
|
|
5913
6106
|
this.setTabIndexIfNotOnNativeEl('0');
|
|
5914
6107
|
}
|
|
5915
6108
|
}
|
|
6109
|
+
/**
|
|
6110
|
+
* Passed to {@link Router#createUrlTree} as part of the
|
|
6111
|
+
* `UrlCreationOptions`.
|
|
6112
|
+
* @see {@link UrlCreationOptions#preserveFragment}
|
|
6113
|
+
* @see {@link Router#createUrlTree}
|
|
6114
|
+
*/
|
|
6115
|
+
preserveFragment = false;
|
|
6116
|
+
/**
|
|
6117
|
+
* Passed to {@link Router#navigateByUrl} as part of the
|
|
6118
|
+
* `NavigationBehaviorOptions`.
|
|
6119
|
+
* @see {@link NavigationBehaviorOptions#skipLocationChange}
|
|
6120
|
+
* @see {@link Router#navigateByUrl}
|
|
6121
|
+
*/
|
|
6122
|
+
skipLocationChange = false;
|
|
6123
|
+
/**
|
|
6124
|
+
* Passed to {@link Router#navigateByUrl} as part of the
|
|
6125
|
+
* `NavigationBehaviorOptions`.
|
|
6126
|
+
* @see {@link NavigationBehaviorOptions#replaceUrl}
|
|
6127
|
+
* @see {@link Router#navigateByUrl}
|
|
6128
|
+
*/
|
|
6129
|
+
replaceUrl = false;
|
|
5916
6130
|
/**
|
|
5917
6131
|
* Modifies the tab index if there was not a tabindex attribute on the element during
|
|
5918
6132
|
* instantiation.
|
|
@@ -5942,6 +6156,7 @@ class RouterLink {
|
|
|
5942
6156
|
// to the RouterLinks it's tracking.
|
|
5943
6157
|
this.onChanges.next(this);
|
|
5944
6158
|
}
|
|
6159
|
+
routerLinkInput = null;
|
|
5945
6160
|
/**
|
|
5946
6161
|
* Commands to pass to {@link Router#createUrlTree} or a `UrlTree`.
|
|
5947
6162
|
* - **array**: commands to pass to {@link Router#createUrlTree}.
|
|
@@ -6046,10 +6261,10 @@ class RouterLink {
|
|
|
6046
6261
|
preserveFragment: this.preserveFragment,
|
|
6047
6262
|
});
|
|
6048
6263
|
}
|
|
6049
|
-
static
|
|
6050
|
-
static
|
|
6264
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", 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 });
|
|
6265
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-rc.0", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", info: "info", 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 });
|
|
6051
6266
|
}
|
|
6052
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
6267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterLink, decorators: [{
|
|
6053
6268
|
type: Directive,
|
|
6054
6269
|
args: [{
|
|
6055
6270
|
selector: '[routerLink]',
|
|
@@ -6167,42 +6382,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
|
|
|
6167
6382
|
* @publicApi
|
|
6168
6383
|
*/
|
|
6169
6384
|
class RouterLinkActive {
|
|
6385
|
+
router;
|
|
6386
|
+
element;
|
|
6387
|
+
renderer;
|
|
6388
|
+
cdr;
|
|
6389
|
+
link;
|
|
6390
|
+
links;
|
|
6391
|
+
classes = [];
|
|
6392
|
+
routerEventsSubscription;
|
|
6393
|
+
linkInputChangesSubscription;
|
|
6394
|
+
_isActive = false;
|
|
6170
6395
|
get isActive() {
|
|
6171
6396
|
return this._isActive;
|
|
6172
6397
|
}
|
|
6398
|
+
/**
|
|
6399
|
+
* Options to configure how to determine if the router link is active.
|
|
6400
|
+
*
|
|
6401
|
+
* These options are passed to the `Router.isActive()` function.
|
|
6402
|
+
*
|
|
6403
|
+
* @see {@link Router#isActive}
|
|
6404
|
+
*/
|
|
6405
|
+
routerLinkActiveOptions = { exact: false };
|
|
6406
|
+
/**
|
|
6407
|
+
* Aria-current attribute to apply when the router link is active.
|
|
6408
|
+
*
|
|
6409
|
+
* Possible values: `'page'` | `'step'` | `'location'` | `'date'` | `'time'` | `true` | `false`.
|
|
6410
|
+
*
|
|
6411
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current}
|
|
6412
|
+
*/
|
|
6413
|
+
ariaCurrentWhenActive;
|
|
6414
|
+
/**
|
|
6415
|
+
*
|
|
6416
|
+
* You can use the output `isActiveChange` to get notified each time the link becomes
|
|
6417
|
+
* active or inactive.
|
|
6418
|
+
*
|
|
6419
|
+
* Emits:
|
|
6420
|
+
* true -> Route is active
|
|
6421
|
+
* false -> Route is inactive
|
|
6422
|
+
*
|
|
6423
|
+
* ```
|
|
6424
|
+
* <a
|
|
6425
|
+
* routerLink="/user/bob"
|
|
6426
|
+
* routerLinkActive="active-link"
|
|
6427
|
+
* (isActiveChange)="this.onRouterLinkActive($event)">Bob</a>
|
|
6428
|
+
* ```
|
|
6429
|
+
*/
|
|
6430
|
+
isActiveChange = new EventEmitter();
|
|
6173
6431
|
constructor(router, element, renderer, cdr, link) {
|
|
6174
6432
|
this.router = router;
|
|
6175
6433
|
this.element = element;
|
|
6176
6434
|
this.renderer = renderer;
|
|
6177
6435
|
this.cdr = cdr;
|
|
6178
6436
|
this.link = link;
|
|
6179
|
-
this.classes = [];
|
|
6180
|
-
this._isActive = false;
|
|
6181
|
-
/**
|
|
6182
|
-
* Options to configure how to determine if the router link is active.
|
|
6183
|
-
*
|
|
6184
|
-
* These options are passed to the `Router.isActive()` function.
|
|
6185
|
-
*
|
|
6186
|
-
* @see {@link Router#isActive}
|
|
6187
|
-
*/
|
|
6188
|
-
this.routerLinkActiveOptions = { exact: false };
|
|
6189
|
-
/**
|
|
6190
|
-
*
|
|
6191
|
-
* You can use the output `isActiveChange` to get notified each time the link becomes
|
|
6192
|
-
* active or inactive.
|
|
6193
|
-
*
|
|
6194
|
-
* Emits:
|
|
6195
|
-
* true -> Route is active
|
|
6196
|
-
* false -> Route is inactive
|
|
6197
|
-
*
|
|
6198
|
-
* ```
|
|
6199
|
-
* <a
|
|
6200
|
-
* routerLink="/user/bob"
|
|
6201
|
-
* routerLinkActive="active-link"
|
|
6202
|
-
* (isActiveChange)="this.onRouterLinkActive($event)">Bob</a>
|
|
6203
|
-
* ```
|
|
6204
|
-
*/
|
|
6205
|
-
this.isActiveChange = new EventEmitter();
|
|
6206
6437
|
this.routerEventsSubscription = router.events.subscribe((s) => {
|
|
6207
6438
|
if (s instanceof NavigationEnd) {
|
|
6208
6439
|
this.update();
|
|
@@ -6287,10 +6518,10 @@ class RouterLinkActive {
|
|
|
6287
6518
|
const isActiveCheckFn = this.isLinkActive(this.router);
|
|
6288
6519
|
return (this.link && isActiveCheckFn(this.link)) || this.links.some(isActiveCheckFn);
|
|
6289
6520
|
}
|
|
6290
|
-
static
|
|
6291
|
-
static
|
|
6521
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
6522
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", 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 });
|
|
6292
6523
|
}
|
|
6293
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
6524
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterLinkActive, decorators: [{
|
|
6294
6525
|
type: Directive,
|
|
6295
6526
|
args: [{
|
|
6296
6527
|
selector: '[routerLinkActive]',
|
|
@@ -6342,10 +6573,10 @@ class PreloadAllModules {
|
|
|
6342
6573
|
preload(route, fn) {
|
|
6343
6574
|
return fn().pipe(catchError(() => of(null)));
|
|
6344
6575
|
}
|
|
6345
|
-
static
|
|
6346
|
-
static
|
|
6576
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6577
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: PreloadAllModules, providedIn: 'root' });
|
|
6347
6578
|
}
|
|
6348
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
6579
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: PreloadAllModules, decorators: [{
|
|
6349
6580
|
type: Injectable,
|
|
6350
6581
|
args: [{ providedIn: 'root' }]
|
|
6351
6582
|
}] });
|
|
@@ -6362,10 +6593,10 @@ class NoPreloading {
|
|
|
6362
6593
|
preload(route, fn) {
|
|
6363
6594
|
return of(null);
|
|
6364
6595
|
}
|
|
6365
|
-
static
|
|
6366
|
-
static
|
|
6596
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6597
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: NoPreloading, providedIn: 'root' });
|
|
6367
6598
|
}
|
|
6368
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
6599
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: NoPreloading, decorators: [{
|
|
6369
6600
|
type: Injectable,
|
|
6370
6601
|
args: [{ providedIn: 'root' }]
|
|
6371
6602
|
}] });
|
|
@@ -6382,6 +6613,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
|
|
|
6382
6613
|
* @publicApi
|
|
6383
6614
|
*/
|
|
6384
6615
|
class RouterPreloader {
|
|
6616
|
+
router;
|
|
6617
|
+
injector;
|
|
6618
|
+
preloadingStrategy;
|
|
6619
|
+
loader;
|
|
6620
|
+
subscription;
|
|
6385
6621
|
constructor(router, compiler, injector, preloadingStrategy, loader) {
|
|
6386
6622
|
this.router = router;
|
|
6387
6623
|
this.injector = injector;
|
|
@@ -6456,16 +6692,27 @@ class RouterPreloader {
|
|
|
6456
6692
|
}
|
|
6457
6693
|
});
|
|
6458
6694
|
}
|
|
6459
|
-
static
|
|
6460
|
-
static
|
|
6695
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6696
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterPreloader, providedIn: 'root' });
|
|
6461
6697
|
}
|
|
6462
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
6698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterPreloader, decorators: [{
|
|
6463
6699
|
type: Injectable,
|
|
6464
6700
|
args: [{ providedIn: 'root' }]
|
|
6465
6701
|
}], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
|
|
6466
6702
|
|
|
6467
6703
|
const ROUTER_SCROLLER = new InjectionToken('');
|
|
6468
6704
|
class RouterScroller {
|
|
6705
|
+
urlSerializer;
|
|
6706
|
+
transitions;
|
|
6707
|
+
viewportScroller;
|
|
6708
|
+
zone;
|
|
6709
|
+
options;
|
|
6710
|
+
routerEventsSubscription;
|
|
6711
|
+
scrollEventsSubscription;
|
|
6712
|
+
lastId = 0;
|
|
6713
|
+
lastSource = 'imperative';
|
|
6714
|
+
restoredId = 0;
|
|
6715
|
+
store = {};
|
|
6469
6716
|
/** @nodoc */
|
|
6470
6717
|
constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) {
|
|
6471
6718
|
this.urlSerializer = urlSerializer;
|
|
@@ -6473,10 +6720,6 @@ class RouterScroller {
|
|
|
6473
6720
|
this.viewportScroller = viewportScroller;
|
|
6474
6721
|
this.zone = zone;
|
|
6475
6722
|
this.options = options;
|
|
6476
|
-
this.lastId = 0;
|
|
6477
|
-
this.lastSource = 'imperative';
|
|
6478
|
-
this.restoredId = 0;
|
|
6479
|
-
this.store = {};
|
|
6480
6723
|
// Default both options to 'disabled'
|
|
6481
6724
|
options.scrollPositionRestoration ||= 'disabled';
|
|
6482
6725
|
options.anchorScrolling ||= 'disabled';
|
|
@@ -6552,10 +6795,10 @@ class RouterScroller {
|
|
|
6552
6795
|
this.routerEventsSubscription?.unsubscribe();
|
|
6553
6796
|
this.scrollEventsSubscription?.unsubscribe();
|
|
6554
6797
|
}
|
|
6555
|
-
static
|
|
6556
|
-
static
|
|
6798
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
6799
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterScroller });
|
|
6557
6800
|
}
|
|
6558
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
6801
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterScroller, decorators: [{
|
|
6559
6802
|
type: Injectable
|
|
6560
6803
|
}], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
|
|
6561
6804
|
|
|
@@ -7227,11 +7470,11 @@ class RouterModule {
|
|
|
7227
7470
|
providers: [{ provide: ROUTES, multi: true, useValue: routes }],
|
|
7228
7471
|
};
|
|
7229
7472
|
}
|
|
7230
|
-
static
|
|
7231
|
-
static
|
|
7232
|
-
static
|
|
7473
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7474
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] });
|
|
7475
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterModule });
|
|
7233
7476
|
}
|
|
7234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-
|
|
7477
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RouterModule, decorators: [{
|
|
7235
7478
|
type: NgModule,
|
|
7236
7479
|
args: [{
|
|
7237
7480
|
imports: ROUTER_DIRECTIVES,
|
|
@@ -7376,7 +7619,12 @@ function mapToResolve(provider) {
|
|
|
7376
7619
|
/**
|
|
7377
7620
|
* @publicApi
|
|
7378
7621
|
*/
|
|
7379
|
-
const VERSION = new Version('19.0.0-
|
|
7622
|
+
const VERSION = new Version('19.0.0-rc.0');
|
|
7623
|
+
|
|
7624
|
+
function getLoadedRoutes(route) {
|
|
7625
|
+
return route._loadedRoutes;
|
|
7626
|
+
}
|
|
7627
|
+
ɵpublishExternalGlobalUtil('ɵgetLoadedRoutes', getLoadedRoutes);
|
|
7380
7628
|
|
|
7381
7629
|
/**
|
|
7382
7630
|
* @module
|