@angular/router 22.0.0-next.8 → 22.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.
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license Angular v22.0.0-next.8
2
+ * @license Angular v22.0.0-rc.0
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import { DOCUMENT, Location } from '@angular/common';
8
8
  import * as i0 from '@angular/core';
9
- import { ɵisPromise as _isPromise, ɵRuntimeError as _RuntimeError, computed, Injectable, InjectionToken, EventEmitter, input, inject, ViewContainerRef, ChangeDetectorRef, Output, Input, Directive, reflectComponentType, ChangeDetectionStrategy, Component, runInInjectionContext, ɵisInjectable as _isInjectable, ɵisNgModule as _isNgModule, isStandalone, createEnvironmentInjector, Compiler, NgModuleFactory, ɵresolveComponentResources as _resolveComponentResources, afterNextRender, signal, EnvironmentInjector, DestroyRef, untracked, ɵConsole as _Console, ɵPendingTasksInternal as _PendingTasksInternal, ɵINTERNAL_APPLICATION_ERROR_HANDLER as _INTERNAL_APPLICATION_ERROR_HANDLER, ɵformatRuntimeError as _formatRuntimeError } from '@angular/core';
9
+ import { ɵisPromise as _isPromise, ɵRuntimeError as _RuntimeError, computed, Service, Injectable, InjectionToken, EventEmitter, input, inject, ViewContainerRef, ChangeDetectorRef, Output, Input, Directive, reflectComponentType, ChangeDetectionStrategy, Component, runInInjectionContext, ɵisInjectable as _isInjectable, ɵisNgModule as _isNgModule, isStandalone, createEnvironmentInjector, Compiler, ɵmaybeUnwrapDefaultExport as _maybeUnwrapDefaultExport, NgModuleFactory, ɵresolveComponentResources as _resolveComponentResources, afterNextRender, signal, EnvironmentInjector, DestroyRef, untracked, ɵConsole as _Console, ɵPendingTasksInternal as _PendingTasksInternal, ɵINTERNAL_APPLICATION_ERROR_HANDLER as _INTERNAL_APPLICATION_ERROR_HANDLER, ɵformatRuntimeError as _formatRuntimeError } from '@angular/core';
10
10
  import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, Observable, concat, defer, pipe, EMPTY, throwError, Subject, Subscription } from 'rxjs';
11
11
  import { first, map, switchMap, take, startWith, filter, takeUntil, mergeMap, concatMap, tap, takeLast, catchError, finalize } from 'rxjs/operators';
12
12
  import * as i1 from '@angular/platform-browser';
@@ -327,31 +327,29 @@ function mapChildrenIntoArray(segment, fn) {
327
327
  class UrlSerializer {
328
328
  static ɵfac = i0.ɵɵngDeclareFactory({
329
329
  minVersion: "12.0.0",
330
- version: "22.0.0-next.8",
330
+ version: "22.0.0-rc.0",
331
331
  ngImport: i0,
332
332
  type: UrlSerializer,
333
333
  deps: [],
334
- target: i0.ɵɵFactoryTarget.Injectable
334
+ target: i0.ɵɵFactoryTarget.Service
335
335
  });
336
- static ɵprov = i0.ɵɵngDeclareInjectable({
337
- minVersion: "12.0.0",
338
- version: "22.0.0-next.8",
336
+ static ɵprov = i0.ɵɵngDeclareService({
337
+ minVersion: "22.0.0",
338
+ version: "22.0.0-rc.0",
339
339
  ngImport: i0,
340
340
  type: UrlSerializer,
341
- providedIn: 'root',
342
- useFactory: () => new DefaultUrlSerializer()
341
+ factory: () => new DefaultUrlSerializer()
343
342
  });
344
343
  }
345
344
  i0.ɵɵngDeclareClassMetadata({
346
345
  minVersion: "12.0.0",
347
- version: "22.0.0-next.8",
346
+ version: "22.0.0-rc.0",
348
347
  ngImport: i0,
349
348
  type: UrlSerializer,
350
349
  decorators: [{
351
- type: Injectable,
350
+ type: Service,
352
351
  args: [{
353
- providedIn: 'root',
354
- useFactory: () => new DefaultUrlSerializer()
352
+ factory: () => new DefaultUrlSerializer()
355
353
  }]
356
354
  }]
357
355
  });
@@ -1301,7 +1299,7 @@ class ChildrenOutletContexts {
1301
1299
  }
1302
1300
  static ɵfac = i0.ɵɵngDeclareFactory({
1303
1301
  minVersion: "12.0.0",
1304
- version: "22.0.0-next.8",
1302
+ version: "22.0.0-rc.0",
1305
1303
  ngImport: i0,
1306
1304
  type: ChildrenOutletContexts,
1307
1305
  deps: [{
@@ -1311,7 +1309,7 @@ class ChildrenOutletContexts {
1311
1309
  });
1312
1310
  static ɵprov = i0.ɵɵngDeclareInjectable({
1313
1311
  minVersion: "12.0.0",
1314
- version: "22.0.0-next.8",
1312
+ version: "22.0.0-rc.0",
1315
1313
  ngImport: i0,
1316
1314
  type: ChildrenOutletContexts,
1317
1315
  providedIn: 'root'
@@ -1319,7 +1317,7 @@ class ChildrenOutletContexts {
1319
1317
  }
1320
1318
  i0.ɵɵngDeclareClassMetadata({
1321
1319
  minVersion: "12.0.0",
1322
- version: "22.0.0-next.8",
1320
+ version: "22.0.0-rc.0",
1323
1321
  ngImport: i0,
1324
1322
  type: ChildrenOutletContexts,
1325
1323
  decorators: [{
@@ -1496,7 +1494,8 @@ class ActivatedRoute {
1496
1494
  return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;
1497
1495
  }
1498
1496
  }
1499
- function getInherited(route, parent, paramsInheritanceStrategy = 'emptyOnly') {
1497
+ const DEFAULT_PARAMS_INHERITANCE_STRATEGY = 'always';
1498
+ function getInherited(route, parent, paramsInheritanceStrategy) {
1500
1499
  let inherited;
1501
1500
  const {
1502
1501
  routeConfig
@@ -1776,7 +1775,7 @@ class RouterOutlet {
1776
1775
  }
1777
1776
  static ɵfac = i0.ɵɵngDeclareFactory({
1778
1777
  minVersion: "12.0.0",
1779
- version: "22.0.0-next.8",
1778
+ version: "22.0.0-rc.0",
1780
1779
  ngImport: i0,
1781
1780
  type: RouterOutlet,
1782
1781
  deps: [],
@@ -1784,7 +1783,7 @@ class RouterOutlet {
1784
1783
  });
1785
1784
  static ɵdir = i0.ɵɵngDeclareDirective({
1786
1785
  minVersion: "17.1.0",
1787
- version: "22.0.0-next.8",
1786
+ version: "22.0.0-rc.0",
1788
1787
  type: RouterOutlet,
1789
1788
  isStandalone: true,
1790
1789
  selector: "router-outlet",
@@ -1817,7 +1816,7 @@ class RouterOutlet {
1817
1816
  }
1818
1817
  i0.ɵɵngDeclareClassMetadata({
1819
1818
  minVersion: "12.0.0",
1820
- version: "22.0.0-next.8",
1819
+ version: "22.0.0-rc.0",
1821
1820
  ngImport: i0,
1822
1821
  type: RouterOutlet,
1823
1822
  decorators: [{
@@ -1885,6 +1884,7 @@ const INPUT_BINDER = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDe
1885
1884
  class RoutedComponentInputBinder {
1886
1885
  options;
1887
1886
  outletDataSubscriptions = new Map();
1887
+ outletSeenKeys = new Map();
1888
1888
  constructor(options) {
1889
1889
  this.options = options;
1890
1890
  this.options.queryParams ??= true;
@@ -1896,6 +1896,7 @@ class RoutedComponentInputBinder {
1896
1896
  unsubscribeFromRouteData(outlet) {
1897
1897
  this.outletDataSubscriptions.get(outlet)?.unsubscribe();
1898
1898
  this.outletDataSubscriptions.delete(outlet);
1899
+ this.outletSeenKeys.delete(outlet);
1899
1900
  }
1900
1901
  subscribeToRouteData(outlet) {
1901
1902
  const {
@@ -1921,17 +1922,29 @@ class RoutedComponentInputBinder {
1921
1922
  this.unsubscribeFromRouteData(outlet);
1922
1923
  return;
1923
1924
  }
1925
+ let seenKeys = this.outletSeenKeys.get(outlet);
1926
+ if (!seenKeys) {
1927
+ seenKeys = new Set();
1928
+ this.outletSeenKeys.set(outlet, seenKeys);
1929
+ }
1930
+ for (const key of Object.keys(data)) {
1931
+ seenKeys.add(key);
1932
+ }
1933
+ const behavior = this.options.unmatchedInputBehavior ?? 'alwaysUndefined';
1924
1934
  for (const {
1925
1935
  templateName
1926
1936
  } of mirror.inputs) {
1927
- outlet.activatedComponentRef.setInput(templateName, data[templateName]);
1937
+ const value = data[templateName];
1938
+ if (value !== undefined || behavior === 'alwaysUndefined' || seenKeys.has(templateName)) {
1939
+ outlet.activatedComponentRef.setInput(templateName, value);
1940
+ }
1928
1941
  }
1929
1942
  });
1930
1943
  this.outletDataSubscriptions.set(outlet, dataSubscription);
1931
1944
  }
1932
1945
  static ɵfac = i0.ɵɵngDeclareFactory({
1933
1946
  minVersion: "12.0.0",
1934
- version: "22.0.0-next.8",
1947
+ version: "22.0.0-rc.0",
1935
1948
  ngImport: i0,
1936
1949
  type: RoutedComponentInputBinder,
1937
1950
  deps: "invalid",
@@ -1939,14 +1952,14 @@ class RoutedComponentInputBinder {
1939
1952
  });
1940
1953
  static ɵprov = i0.ɵɵngDeclareInjectable({
1941
1954
  minVersion: "12.0.0",
1942
- version: "22.0.0-next.8",
1955
+ version: "22.0.0-rc.0",
1943
1956
  ngImport: i0,
1944
1957
  type: RoutedComponentInputBinder
1945
1958
  });
1946
1959
  }
1947
1960
  i0.ɵɵngDeclareClassMetadata({
1948
1961
  minVersion: "12.0.0",
1949
- version: "22.0.0-next.8",
1962
+ version: "22.0.0-rc.0",
1950
1963
  ngImport: i0,
1951
1964
  type: RoutedComponentInputBinder,
1952
1965
  decorators: [{
@@ -1960,7 +1973,7 @@ i0.ɵɵngDeclareClassMetadata({
1960
1973
  class ɵEmptyOutletComponent {
1961
1974
  static ɵfac = i0.ɵɵngDeclareFactory({
1962
1975
  minVersion: "12.0.0",
1963
- version: "22.0.0-next.8",
1976
+ version: "22.0.0-rc.0",
1964
1977
  ngImport: i0,
1965
1978
  type: ɵEmptyOutletComponent,
1966
1979
  deps: [],
@@ -1968,7 +1981,7 @@ class ɵEmptyOutletComponent {
1968
1981
  });
1969
1982
  static ɵcmp = i0.ɵɵngDeclareComponent({
1970
1983
  minVersion: "14.0.0",
1971
- version: "22.0.0-next.8",
1984
+ version: "22.0.0-rc.0",
1972
1985
  type: ɵEmptyOutletComponent,
1973
1986
  isStandalone: true,
1974
1987
  selector: "ng-component",
@@ -1989,7 +2002,7 @@ class ɵEmptyOutletComponent {
1989
2002
  }
1990
2003
  i0.ɵɵngDeclareClassMetadata({
1991
2004
  minVersion: "12.0.0",
1992
- version: "22.0.0-next.8",
2005
+ version: "22.0.0-rc.0",
1993
2006
  ngImport: i0,
1994
2007
  type: ɵEmptyOutletComponent,
1995
2008
  decorators: [{
@@ -2900,7 +2913,7 @@ function noLeftoversInUrl(segmentGroup, segments, outlet) {
2900
2913
  }
2901
2914
 
2902
2915
  class NoLeftoversInUrl {}
2903
- async function recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = 'emptyOnly', abortSignal) {
2916
+ async function recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy, abortSignal) {
2904
2917
  return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer, abortSignal).recognize();
2905
2918
  }
2906
2919
  const MAX_ALLOWED_REDIRECTS = 31;
@@ -3300,31 +3313,29 @@ class TitleStrategy {
3300
3313
  }
3301
3314
  static ɵfac = i0.ɵɵngDeclareFactory({
3302
3315
  minVersion: "12.0.0",
3303
- version: "22.0.0-next.8",
3316
+ version: "22.0.0-rc.0",
3304
3317
  ngImport: i0,
3305
3318
  type: TitleStrategy,
3306
3319
  deps: [],
3307
- target: i0.ɵɵFactoryTarget.Injectable
3320
+ target: i0.ɵɵFactoryTarget.Service
3308
3321
  });
3309
- static ɵprov = i0.ɵɵngDeclareInjectable({
3310
- minVersion: "12.0.0",
3311
- version: "22.0.0-next.8",
3322
+ static ɵprov = i0.ɵɵngDeclareService({
3323
+ minVersion: "22.0.0",
3324
+ version: "22.0.0-rc.0",
3312
3325
  ngImport: i0,
3313
3326
  type: TitleStrategy,
3314
- providedIn: 'root',
3315
- useFactory: () => inject(DefaultTitleStrategy)
3327
+ factory: () => inject(DefaultTitleStrategy)
3316
3328
  });
3317
3329
  }
3318
3330
  i0.ɵɵngDeclareClassMetadata({
3319
3331
  minVersion: "12.0.0",
3320
- version: "22.0.0-next.8",
3332
+ version: "22.0.0-rc.0",
3321
3333
  ngImport: i0,
3322
3334
  type: TitleStrategy,
3323
3335
  decorators: [{
3324
- type: Injectable,
3336
+ type: Service,
3325
3337
  args: [{
3326
- providedIn: 'root',
3327
- useFactory: () => inject(DefaultTitleStrategy)
3338
+ factory: () => inject(DefaultTitleStrategy)
3328
3339
  }]
3329
3340
  }]
3330
3341
  });
@@ -3342,7 +3353,7 @@ class DefaultTitleStrategy extends TitleStrategy {
3342
3353
  }
3343
3354
  static ɵfac = i0.ɵɵngDeclareFactory({
3344
3355
  minVersion: "12.0.0",
3345
- version: "22.0.0-next.8",
3356
+ version: "22.0.0-rc.0",
3346
3357
  ngImport: i0,
3347
3358
  type: DefaultTitleStrategy,
3348
3359
  deps: [{
@@ -3352,7 +3363,7 @@ class DefaultTitleStrategy extends TitleStrategy {
3352
3363
  });
3353
3364
  static ɵprov = i0.ɵɵngDeclareInjectable({
3354
3365
  minVersion: "12.0.0",
3355
- version: "22.0.0-next.8",
3366
+ version: "22.0.0-rc.0",
3356
3367
  ngImport: i0,
3357
3368
  type: DefaultTitleStrategy,
3358
3369
  providedIn: 'root'
@@ -3360,7 +3371,7 @@ class DefaultTitleStrategy extends TitleStrategy {
3360
3371
  }
3361
3372
  i0.ɵɵngDeclareClassMetadata({
3362
3373
  minVersion: "12.0.0",
3363
- version: "22.0.0-next.8",
3374
+ version: "22.0.0-rc.0",
3364
3375
  ngImport: i0,
3365
3376
  type: DefaultTitleStrategy,
3366
3377
  decorators: [{
@@ -3397,7 +3408,7 @@ class RouterConfigLoader {
3397
3408
  const loader = (async () => {
3398
3409
  try {
3399
3410
  const loaded = await wrapIntoPromise(runInInjectionContext(injector, () => route.loadComponent()));
3400
- const component = await maybeResolveResources(maybeUnwrapDefaultExport(loaded));
3411
+ const component = await maybeResolveResources(_maybeUnwrapDefaultExport(loaded));
3401
3412
  if (this.onLoadEndListener) {
3402
3413
  this.onLoadEndListener(route);
3403
3414
  }
@@ -3439,35 +3450,31 @@ class RouterConfigLoader {
3439
3450
  }
3440
3451
  static ɵfac = i0.ɵɵngDeclareFactory({
3441
3452
  minVersion: "12.0.0",
3442
- version: "22.0.0-next.8",
3453
+ version: "22.0.0-rc.0",
3443
3454
  ngImport: i0,
3444
3455
  type: RouterConfigLoader,
3445
3456
  deps: [],
3446
- target: i0.ɵɵFactoryTarget.Injectable
3457
+ target: i0.ɵɵFactoryTarget.Service
3447
3458
  });
3448
- static ɵprov = i0.ɵɵngDeclareInjectable({
3449
- minVersion: "12.0.0",
3450
- version: "22.0.0-next.8",
3459
+ static ɵprov = i0.ɵɵngDeclareService({
3460
+ minVersion: "22.0.0",
3461
+ version: "22.0.0-rc.0",
3451
3462
  ngImport: i0,
3452
- type: RouterConfigLoader,
3453
- providedIn: 'root'
3463
+ type: RouterConfigLoader
3454
3464
  });
3455
3465
  }
3456
3466
  i0.ɵɵngDeclareClassMetadata({
3457
3467
  minVersion: "12.0.0",
3458
- version: "22.0.0-next.8",
3468
+ version: "22.0.0-rc.0",
3459
3469
  ngImport: i0,
3460
3470
  type: RouterConfigLoader,
3461
3471
  decorators: [{
3462
- type: Injectable,
3463
- args: [{
3464
- providedIn: 'root'
3465
- }]
3472
+ type: Service
3466
3473
  }]
3467
3474
  });
3468
3475
  async function loadChildren(route, compiler, parentInjector, onLoadEndListener) {
3469
3476
  const loaded = await wrapIntoPromise(runInInjectionContext(parentInjector, () => route.loadChildren()));
3470
- const t = await maybeResolveResources(maybeUnwrapDefaultExport(loaded));
3477
+ const t = await maybeResolveResources(_maybeUnwrapDefaultExport(loaded));
3471
3478
  let factoryOrRoutes;
3472
3479
  if (t instanceof NgModuleFactory || Array.isArray(t)) {
3473
3480
  factoryOrRoutes = t;
@@ -3500,12 +3507,6 @@ async function loadChildren(route, compiler, parentInjector, onLoadEndListener)
3500
3507
  factory
3501
3508
  };
3502
3509
  }
3503
- function isWrappedDefaultExport(value) {
3504
- return value && typeof value === 'object' && 'default' in value;
3505
- }
3506
- function maybeUnwrapDefaultExport(input) {
3507
- return isWrappedDefaultExport(input) ? input['default'] : input;
3508
- }
3509
3510
  async function maybeResolveResources(value) {
3510
3511
  if ((typeof ngJitMode === 'undefined' || ngJitMode) && typeof fetch === 'function') {
3511
3512
  try {
@@ -3520,31 +3521,29 @@ async function maybeResolveResources(value) {
3520
3521
  class UrlHandlingStrategy {
3521
3522
  static ɵfac = i0.ɵɵngDeclareFactory({
3522
3523
  minVersion: "12.0.0",
3523
- version: "22.0.0-next.8",
3524
+ version: "22.0.0-rc.0",
3524
3525
  ngImport: i0,
3525
3526
  type: UrlHandlingStrategy,
3526
3527
  deps: [],
3527
- target: i0.ɵɵFactoryTarget.Injectable
3528
+ target: i0.ɵɵFactoryTarget.Service
3528
3529
  });
3529
- static ɵprov = i0.ɵɵngDeclareInjectable({
3530
- minVersion: "12.0.0",
3531
- version: "22.0.0-next.8",
3530
+ static ɵprov = i0.ɵɵngDeclareService({
3531
+ minVersion: "22.0.0",
3532
+ version: "22.0.0-rc.0",
3532
3533
  ngImport: i0,
3533
3534
  type: UrlHandlingStrategy,
3534
- providedIn: 'root',
3535
- useFactory: () => inject(DefaultUrlHandlingStrategy)
3535
+ factory: () => inject(DefaultUrlHandlingStrategy)
3536
3536
  });
3537
3537
  }
3538
3538
  i0.ɵɵngDeclareClassMetadata({
3539
3539
  minVersion: "12.0.0",
3540
- version: "22.0.0-next.8",
3540
+ version: "22.0.0-rc.0",
3541
3541
  ngImport: i0,
3542
3542
  type: UrlHandlingStrategy,
3543
3543
  decorators: [{
3544
- type: Injectable,
3544
+ type: Service,
3545
3545
  args: [{
3546
- providedIn: 'root',
3547
- useFactory: () => inject(DefaultUrlHandlingStrategy)
3546
+ factory: () => inject(DefaultUrlHandlingStrategy)
3548
3547
  }]
3549
3548
  }]
3550
3549
  });
@@ -3560,30 +3559,26 @@ class DefaultUrlHandlingStrategy {
3560
3559
  }
3561
3560
  static ɵfac = i0.ɵɵngDeclareFactory({
3562
3561
  minVersion: "12.0.0",
3563
- version: "22.0.0-next.8",
3562
+ version: "22.0.0-rc.0",
3564
3563
  ngImport: i0,
3565
3564
  type: DefaultUrlHandlingStrategy,
3566
3565
  deps: [],
3567
- target: i0.ɵɵFactoryTarget.Injectable
3566
+ target: i0.ɵɵFactoryTarget.Service
3568
3567
  });
3569
- static ɵprov = i0.ɵɵngDeclareInjectable({
3570
- minVersion: "12.0.0",
3571
- version: "22.0.0-next.8",
3568
+ static ɵprov = i0.ɵɵngDeclareService({
3569
+ minVersion: "22.0.0",
3570
+ version: "22.0.0-rc.0",
3572
3571
  ngImport: i0,
3573
- type: DefaultUrlHandlingStrategy,
3574
- providedIn: 'root'
3572
+ type: DefaultUrlHandlingStrategy
3575
3573
  });
3576
3574
  }
3577
3575
  i0.ɵɵngDeclareClassMetadata({
3578
3576
  minVersion: "12.0.0",
3579
- version: "22.0.0-next.8",
3577
+ version: "22.0.0-rc.0",
3580
3578
  ngImport: i0,
3581
3579
  type: DefaultUrlHandlingStrategy,
3582
3580
  decorators: [{
3583
- type: Injectable,
3584
- args: [{
3585
- providedIn: 'root'
3586
- }]
3581
+ type: Service
3587
3582
  }]
3588
3583
  });
3589
3584
 
@@ -3669,7 +3664,7 @@ class NavigationTransitions {
3669
3664
  options = inject(ROUTER_CONFIGURATION, {
3670
3665
  optional: true
3671
3666
  }) || {};
3672
- paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';
3667
+ paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || DEFAULT_PARAMS_INHERITANCE_STRATEGY;
3673
3668
  urlHandlingStrategy = inject(UrlHandlingStrategy);
3674
3669
  createViewTransition = inject(CREATE_VIEW_TRANSITION, {
3675
3670
  optional: true
@@ -3719,6 +3714,7 @@ class NavigationTransitions {
3719
3714
  setupNavigations(router) {
3720
3715
  this.transitions = new BehaviorSubject(null);
3721
3716
  return this.transitions.pipe(filter(t => t !== null), switchMap(overallTransitionState => {
3717
+ let abortable = true;
3722
3718
  let completedOrAborted = false;
3723
3719
  const abortController = new AbortController();
3724
3720
  const shouldContinueNavigation = () => {
@@ -3867,14 +3863,7 @@ class NavigationTransitions {
3867
3863
  };
3868
3864
  const loaders = loadComponents(t.targetSnapshot.root);
3869
3865
  return loaders.length === 0 ? of(t) : from(Promise.all(loaders).then(() => t));
3870
- }), switchTap(() => this.afterPreactivation()), switchMap(() => {
3871
- const {
3872
- currentSnapshot,
3873
- targetSnapshot
3874
- } = overallTransitionState;
3875
- const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root);
3876
- return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState);
3877
- }), take(1), switchMap(t => {
3866
+ }), switchMap(t => {
3878
3867
  const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState);
3879
3868
  this.currentTransition = overallTransitionState = t = {
3880
3869
  ...t,
@@ -3884,6 +3873,16 @@ class NavigationTransitions {
3884
3873
  nav.targetRouterState = targetRouterState;
3885
3874
  return nav;
3886
3875
  });
3876
+ return of(t);
3877
+ }), switchTap(() => this.afterPreactivation()), switchMap(() => {
3878
+ const {
3879
+ currentSnapshot,
3880
+ targetSnapshot
3881
+ } = overallTransitionState;
3882
+ const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root);
3883
+ return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState);
3884
+ }), take(1), switchMap(t => {
3885
+ abortable = false;
3887
3886
  this.events.next(new BeforeActivateRoutes());
3888
3887
  const deferred = overallTransitionState.beforeActivateHandler.deferredHandle;
3889
3888
  return deferred ? from(deferred.then(() => t)) : of(t);
@@ -3901,7 +3900,7 @@ class NavigationTransitions {
3901
3900
  this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects)));
3902
3901
  this.titleStrategy?.updateTitle(t.targetRouterState.snapshot);
3903
3902
  t.resolve(true);
3904
- }), takeUntil(abortSignalToObservable(abortController.signal).pipe(filter(() => !completedOrAborted && !overallTransitionState.targetRouterState), tap(() => {
3903
+ }), takeUntil(abortSignalToObservable(abortController.signal).pipe(filter(() => !completedOrAborted && abortable), tap(() => {
3905
3904
  this.cancelNavigationTransition(overallTransitionState, abortController.signal.reason + '', NavigationCancellationCode.Aborted);
3906
3905
  }))), tap({
3907
3906
  complete: () => {
@@ -3975,30 +3974,26 @@ class NavigationTransitions {
3975
3974
  }
3976
3975
  static ɵfac = i0.ɵɵngDeclareFactory({
3977
3976
  minVersion: "12.0.0",
3978
- version: "22.0.0-next.8",
3977
+ version: "22.0.0-rc.0",
3979
3978
  ngImport: i0,
3980
3979
  type: NavigationTransitions,
3981
3980
  deps: [],
3982
- target: i0.ɵɵFactoryTarget.Injectable
3981
+ target: i0.ɵɵFactoryTarget.Service
3983
3982
  });
3984
- static ɵprov = i0.ɵɵngDeclareInjectable({
3985
- minVersion: "12.0.0",
3986
- version: "22.0.0-next.8",
3983
+ static ɵprov = i0.ɵɵngDeclareService({
3984
+ minVersion: "22.0.0",
3985
+ version: "22.0.0-rc.0",
3987
3986
  ngImport: i0,
3988
- type: NavigationTransitions,
3989
- providedIn: 'root'
3987
+ type: NavigationTransitions
3990
3988
  });
3991
3989
  }
3992
3990
  i0.ɵɵngDeclareClassMetadata({
3993
3991
  minVersion: "12.0.0",
3994
- version: "22.0.0-next.8",
3992
+ version: "22.0.0-rc.0",
3995
3993
  ngImport: i0,
3996
3994
  type: NavigationTransitions,
3997
3995
  decorators: [{
3998
- type: Injectable,
3999
- args: [{
4000
- providedIn: 'root'
4001
- }]
3996
+ type: Service
4002
3997
  }],
4003
3998
  ctorParameters: () => []
4004
3999
  });
@@ -4064,31 +4059,29 @@ function destroyDetachedRouteHandle(handle) {
4064
4059
  class RouteReuseStrategy {
4065
4060
  static ɵfac = i0.ɵɵngDeclareFactory({
4066
4061
  minVersion: "12.0.0",
4067
- version: "22.0.0-next.8",
4062
+ version: "22.0.0-rc.0",
4068
4063
  ngImport: i0,
4069
4064
  type: RouteReuseStrategy,
4070
4065
  deps: [],
4071
- target: i0.ɵɵFactoryTarget.Injectable
4066
+ target: i0.ɵɵFactoryTarget.Service
4072
4067
  });
4073
- static ɵprov = i0.ɵɵngDeclareInjectable({
4074
- minVersion: "12.0.0",
4075
- version: "22.0.0-next.8",
4068
+ static ɵprov = i0.ɵɵngDeclareService({
4069
+ minVersion: "22.0.0",
4070
+ version: "22.0.0-rc.0",
4076
4071
  ngImport: i0,
4077
4072
  type: RouteReuseStrategy,
4078
- providedIn: 'root',
4079
- useFactory: () => inject(DefaultRouteReuseStrategy)
4073
+ factory: () => inject(DefaultRouteReuseStrategy)
4080
4074
  });
4081
4075
  }
4082
4076
  i0.ɵɵngDeclareClassMetadata({
4083
4077
  minVersion: "12.0.0",
4084
- version: "22.0.0-next.8",
4078
+ version: "22.0.0-rc.0",
4085
4079
  ngImport: i0,
4086
4080
  type: RouteReuseStrategy,
4087
4081
  decorators: [{
4088
- type: Injectable,
4082
+ type: Service,
4089
4083
  args: [{
4090
- providedIn: 'root',
4091
- useFactory: () => inject(DefaultRouteReuseStrategy)
4084
+ factory: () => inject(DefaultRouteReuseStrategy)
4092
4085
  }]
4093
4086
  }]
4094
4087
  });
@@ -4113,30 +4106,26 @@ class BaseRouteReuseStrategy {
4113
4106
  class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
4114
4107
  static ɵfac = i0.ɵɵngDeclareFactory({
4115
4108
  minVersion: "12.0.0",
4116
- version: "22.0.0-next.8",
4109
+ version: "22.0.0-rc.0",
4117
4110
  ngImport: i0,
4118
4111
  type: DefaultRouteReuseStrategy,
4119
- deps: null,
4120
- target: i0.ɵɵFactoryTarget.Injectable
4112
+ deps: [],
4113
+ target: i0.ɵɵFactoryTarget.Service
4121
4114
  });
4122
- static ɵprov = i0.ɵɵngDeclareInjectable({
4123
- minVersion: "12.0.0",
4124
- version: "22.0.0-next.8",
4115
+ static ɵprov = i0.ɵɵngDeclareService({
4116
+ minVersion: "22.0.0",
4117
+ version: "22.0.0-rc.0",
4125
4118
  ngImport: i0,
4126
- type: DefaultRouteReuseStrategy,
4127
- providedIn: 'root'
4119
+ type: DefaultRouteReuseStrategy
4128
4120
  });
4129
4121
  }
4130
4122
  i0.ɵɵngDeclareClassMetadata({
4131
4123
  minVersion: "12.0.0",
4132
- version: "22.0.0-next.8",
4124
+ version: "22.0.0-rc.0",
4133
4125
  ngImport: i0,
4134
4126
  type: DefaultRouteReuseStrategy,
4135
4127
  decorators: [{
4136
- type: Injectable,
4137
- args: [{
4138
- providedIn: 'root'
4139
- }]
4128
+ type: Service
4140
4129
  }]
4141
4130
  });
4142
4131
 
@@ -4167,6 +4156,14 @@ class StateManager {
4167
4156
  const path = url instanceof UrlTree ? this.urlSerializer.serialize(url) : url;
4168
4157
  return path;
4169
4158
  }
4159
+ routerUrlState(navigation) {
4160
+ if (navigation?.targetBrowserUrl === undefined || navigation?.finalUrl === undefined) {
4161
+ return {};
4162
+ }
4163
+ return {
4164
+ ɵrouterUrl: this.urlSerializer.serialize(navigation.finalUrl)
4165
+ };
4166
+ }
4170
4167
  commitTransition({
4171
4168
  targetRouterState,
4172
4169
  finalUrl,
@@ -4203,31 +4200,29 @@ class StateManager {
4203
4200
  }
4204
4201
  static ɵfac = i0.ɵɵngDeclareFactory({
4205
4202
  minVersion: "12.0.0",
4206
- version: "22.0.0-next.8",
4203
+ version: "22.0.0-rc.0",
4207
4204
  ngImport: i0,
4208
4205
  type: StateManager,
4209
4206
  deps: [],
4210
- target: i0.ɵɵFactoryTarget.Injectable
4207
+ target: i0.ɵɵFactoryTarget.Service
4211
4208
  });
4212
- static ɵprov = i0.ɵɵngDeclareInjectable({
4213
- minVersion: "12.0.0",
4214
- version: "22.0.0-next.8",
4209
+ static ɵprov = i0.ɵɵngDeclareService({
4210
+ minVersion: "22.0.0",
4211
+ version: "22.0.0-rc.0",
4215
4212
  ngImport: i0,
4216
4213
  type: StateManager,
4217
- providedIn: 'root',
4218
- useFactory: () => inject(HistoryStateManager)
4214
+ factory: () => inject(HistoryStateManager)
4219
4215
  });
4220
4216
  }
4221
4217
  i0.ɵɵngDeclareClassMetadata({
4222
4218
  minVersion: "12.0.0",
4223
- version: "22.0.0-next.8",
4219
+ version: "22.0.0-rc.0",
4224
4220
  ngImport: i0,
4225
4221
  type: StateManager,
4226
4222
  decorators: [{
4227
- type: Injectable,
4223
+ type: Service,
4228
4224
  args: [{
4229
- providedIn: 'root',
4230
- useFactory: () => inject(HistoryStateManager)
4225
+ factory: () => inject(HistoryStateManager)
4231
4226
  }]
4232
4227
  }]
4233
4228
  });
@@ -4276,10 +4271,11 @@ class HistoryStateManager extends StateManager {
4276
4271
  this.currentPageId = this.browserPageId;
4277
4272
  }
4278
4273
  }
4279
- setBrowserUrl(path, {
4280
- extras,
4281
- id
4282
- }) {
4274
+ setBrowserUrl(path, navigation) {
4275
+ const {
4276
+ extras,
4277
+ id
4278
+ } = navigation;
4283
4279
  const {
4284
4280
  replaceUrl,
4285
4281
  state
@@ -4288,13 +4284,13 @@ class HistoryStateManager extends StateManager {
4288
4284
  const currentBrowserPageId = this.browserPageId;
4289
4285
  const newState = {
4290
4286
  ...state,
4291
- ...this.generateNgRouterState(id, currentBrowserPageId)
4287
+ ...this.generateNgRouterState(id, currentBrowserPageId, navigation)
4292
4288
  };
4293
4289
  this.location.replaceState(path, '', newState);
4294
4290
  } else {
4295
4291
  const newState = {
4296
4292
  ...state,
4297
- ...this.generateNgRouterState(id, this.browserPageId + 1)
4293
+ ...this.generateNgRouterState(id, this.browserPageId + 1, navigation)
4298
4294
  };
4299
4295
  this.location.go(path, '', newState);
4300
4296
  }
@@ -4326,43 +4322,41 @@ class HistoryStateManager extends StateManager {
4326
4322
  resetUrlToCurrentUrlTree() {
4327
4323
  this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()), '', this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId));
4328
4324
  }
4329
- generateNgRouterState(navigationId, routerPageId) {
4325
+ generateNgRouterState(navigationId, routerPageId, navigation) {
4330
4326
  if (this.canceledNavigationResolution === 'computed') {
4331
4327
  return {
4332
4328
  navigationId,
4333
- ɵrouterPageId: routerPageId
4329
+ ɵrouterPageId: routerPageId,
4330
+ ...this.routerUrlState(navigation)
4334
4331
  };
4335
4332
  }
4336
4333
  return {
4337
- navigationId
4334
+ navigationId,
4335
+ ...this.routerUrlState(navigation)
4338
4336
  };
4339
4337
  }
4340
4338
  static ɵfac = i0.ɵɵngDeclareFactory({
4341
4339
  minVersion: "12.0.0",
4342
- version: "22.0.0-next.8",
4340
+ version: "22.0.0-rc.0",
4343
4341
  ngImport: i0,
4344
4342
  type: HistoryStateManager,
4345
- deps: null,
4346
- target: i0.ɵɵFactoryTarget.Injectable
4343
+ deps: [],
4344
+ target: i0.ɵɵFactoryTarget.Service
4347
4345
  });
4348
- static ɵprov = i0.ɵɵngDeclareInjectable({
4349
- minVersion: "12.0.0",
4350
- version: "22.0.0-next.8",
4346
+ static ɵprov = i0.ɵɵngDeclareService({
4347
+ minVersion: "22.0.0",
4348
+ version: "22.0.0-rc.0",
4351
4349
  ngImport: i0,
4352
- type: HistoryStateManager,
4353
- providedIn: 'root'
4350
+ type: HistoryStateManager
4354
4351
  });
4355
4352
  }
4356
4353
  i0.ɵɵngDeclareClassMetadata({
4357
4354
  minVersion: "12.0.0",
4358
- version: "22.0.0-next.8",
4355
+ version: "22.0.0-rc.0",
4359
4356
  ngImport: i0,
4360
4357
  type: HistoryStateManager,
4361
4358
  decorators: [{
4362
- type: Injectable,
4363
- args: [{
4364
- providedIn: 'root'
4365
- }]
4359
+ type: Service
4366
4360
  }]
4367
4361
  });
4368
4362
 
@@ -4485,17 +4479,25 @@ class Router {
4485
4479
  }
4486
4480
  navigateToSyncWithBrowser(url, source, state, extras) {
4487
4481
  const restoredState = state?.navigationId ? state : null;
4482
+ const routerUrl = state?.ɵrouterUrl ?? url;
4483
+ if (state?.ɵrouterUrl) {
4484
+ extras = {
4485
+ ...extras,
4486
+ browserUrl: url
4487
+ };
4488
+ }
4488
4489
  if (state) {
4489
4490
  const stateCopy = {
4490
4491
  ...state
4491
4492
  };
4492
4493
  delete stateCopy.navigationId;
4493
4494
  delete stateCopy.ɵrouterPageId;
4495
+ delete stateCopy.ɵrouterUrl;
4494
4496
  if (Object.keys(stateCopy).length !== 0) {
4495
4497
  extras.state = stateCopy;
4496
4498
  }
4497
4499
  }
4498
- const urlTree = this.parseUrl(url);
4500
+ const urlTree = this.parseUrl(routerUrl);
4499
4501
  this.scheduleNavigation(urlTree, source, restoredState, extras).catch(e => {
4500
4502
  if (this.disposed) {
4501
4503
  return;
@@ -4658,30 +4660,26 @@ class Router {
4658
4660
  }
4659
4661
  static ɵfac = i0.ɵɵngDeclareFactory({
4660
4662
  minVersion: "12.0.0",
4661
- version: "22.0.0-next.8",
4663
+ version: "22.0.0-rc.0",
4662
4664
  ngImport: i0,
4663
4665
  type: Router,
4664
4666
  deps: [],
4665
- target: i0.ɵɵFactoryTarget.Injectable
4667
+ target: i0.ɵɵFactoryTarget.Service
4666
4668
  });
4667
- static ɵprov = i0.ɵɵngDeclareInjectable({
4668
- minVersion: "12.0.0",
4669
- version: "22.0.0-next.8",
4669
+ static ɵprov = i0.ɵɵngDeclareService({
4670
+ minVersion: "22.0.0",
4671
+ version: "22.0.0-rc.0",
4670
4672
  ngImport: i0,
4671
- type: Router,
4672
- providedIn: 'root'
4673
+ type: Router
4673
4674
  });
4674
4675
  }
4675
4676
  i0.ɵɵngDeclareClassMetadata({
4676
4677
  minVersion: "12.0.0",
4677
- version: "22.0.0-next.8",
4678
+ version: "22.0.0-rc.0",
4678
4679
  ngImport: i0,
4679
4680
  type: Router,
4680
4681
  decorators: [{
4681
- type: Injectable,
4682
- args: [{
4683
- providedIn: 'root'
4684
- }]
4682
+ type: Service
4685
4683
  }],
4686
4684
  ctorParameters: () => []
4687
4685
  });