@angular/router 17.1.0-next.1 → 17.1.0-next.3

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.
Files changed (34) hide show
  1. package/esm2022/src/components/empty_outlet.mjs +3 -3
  2. package/esm2022/src/directives/router_link.mjs +3 -3
  3. package/esm2022/src/directives/router_link_active.mjs +3 -3
  4. package/esm2022/src/directives/router_outlet.mjs +6 -6
  5. package/esm2022/src/models.mjs +1 -1
  6. package/esm2022/src/navigation_transition.mjs +19 -5
  7. package/esm2022/src/operators/check_guards.mjs +7 -6
  8. package/esm2022/src/operators/resolve_data.mjs +19 -14
  9. package/esm2022/src/page_title_strategy.mjs +6 -6
  10. package/esm2022/src/provide_router.mjs +3 -3
  11. package/esm2022/src/recognize.mjs +5 -20
  12. package/esm2022/src/route_reuse_strategy.mjs +6 -6
  13. package/esm2022/src/router.mjs +9 -7
  14. package/esm2022/src/router_config.mjs +1 -1
  15. package/esm2022/src/router_config_loader.mjs +3 -3
  16. package/esm2022/src/router_module.mjs +4 -4
  17. package/esm2022/src/router_outlet_context.mjs +3 -3
  18. package/esm2022/src/router_preloader.mjs +9 -9
  19. package/esm2022/src/router_scroller.mjs +3 -3
  20. package/esm2022/src/statemanager/state_manager.mjs +6 -6
  21. package/esm2022/src/url_handling_strategy.mjs +6 -6
  22. package/esm2022/src/url_tree.mjs +3 -3
  23. package/esm2022/src/utils/config_matching.mjs +14 -4
  24. package/esm2022/src/version.mjs +1 -1
  25. package/esm2022/testing/src/router_testing_harness.mjs +6 -6
  26. package/esm2022/testing/src/router_testing_module.mjs +4 -4
  27. package/fesm2022/router.mjs +130 -115
  28. package/fesm2022/router.mjs.map +1 -1
  29. package/fesm2022/testing.mjs +11 -11
  30. package/fesm2022/upgrade.mjs +1 -1
  31. package/index.d.ts +41 -4
  32. package/package.json +4 -4
  33. package/testing/index.d.ts +1 -1
  34. package/upgrade/index.d.ts +1 -1
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Angular v17.1.0-next.1
2
+ * @license Angular v17.1.0-next.3
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import * as i0 from '@angular/core';
8
- import { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, Compiler, NgModuleFactory, NgZone, runInInjectionContext, afterNextRender, ɵConsole, ɵInitialRenderPendingTasks, ɵɵ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, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, runInInjectionContext, Compiler, NgModuleFactory, NgZone, afterNextRender, ɵConsole, ɵInitialRenderPendingTasks, ɵɵ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';
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';
@@ -425,10 +425,10 @@ function mapChildrenIntoArray(segment, fn) {
425
425
  * @publicApi
426
426
  */
427
427
  class UrlSerializer {
428
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
429
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
429
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
430
430
  }
431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: UrlSerializer, decorators: [{
431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: UrlSerializer, decorators: [{
432
432
  type: Injectable,
433
433
  args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
434
434
  }] });
@@ -1855,10 +1855,10 @@ class ChildrenOutletContexts {
1855
1855
  getContext(childName) {
1856
1856
  return this.contexts.get(childName) || null;
1857
1857
  }
1858
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1859
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1858
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1859
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1860
1860
  }
1861
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1862
1862
  type: Injectable,
1863
1863
  args: [{ providedIn: 'root' }]
1864
1864
  }] });
@@ -2578,10 +2578,10 @@ class RouterOutlet {
2578
2578
  this.inputBinder?.bindActivatedRouteToOutletComponent(this);
2579
2579
  this.activateEvents.emit(this.activated.instance);
2580
2580
  }
2581
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2582
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0-next.1", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: "name" }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 }); }
2581
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2582
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0-next.3", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: "name" }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 }); }
2583
2583
  }
2584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterOutlet, decorators: [{
2584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterOutlet, decorators: [{
2585
2585
  type: Directive,
2586
2586
  args: [{
2587
2587
  selector: 'router-outlet',
@@ -2684,10 +2684,10 @@ class RoutedComponentInputBinder {
2684
2684
  });
2685
2685
  this.outletDataSubscriptions.set(outlet, dataSubscription);
2686
2686
  }
2687
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2688
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RoutedComponentInputBinder }); }
2687
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2688
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RoutedComponentInputBinder }); }
2689
2689
  }
2690
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2691
2691
  type: Injectable
2692
2692
  }] });
2693
2693
 
@@ -2767,10 +2767,10 @@ function isNavigationCancelingError$1(error) {
2767
2767
  * to this `EmptyOutletComponent`.
2768
2768
  */
2769
2769
  class ɵEmptyOutletComponent {
2770
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2771
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0-next.1", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2770
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2771
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0-next.3", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2772
2772
  }
2773
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2774
2774
  type: Component,
2775
2775
  args: [{
2776
2776
  template: `<router-outlet></router-outlet>`,
@@ -3425,7 +3425,7 @@ function runCanActivate(futureRSS, futureARS, injector) {
3425
3425
  const guard = getTokenOrFunctionIdentity(canActivate, closestInjector);
3426
3426
  const guardVal = isCanActivate(guard) ?
3427
3427
  guard.canActivate(futureARS, futureRSS) :
3428
- closestInjector.runInContext(() => guard(futureARS, futureRSS));
3428
+ runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));
3429
3429
  return wrapIntoObservable(guardVal).pipe(first());
3430
3430
  });
3431
3431
  });
@@ -3444,7 +3444,7 @@ function runCanActivateChild(futureRSS, path, injector) {
3444
3444
  const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector);
3445
3445
  const guardVal = isCanActivateChild(guard) ?
3446
3446
  guard.canActivateChild(futureARS, futureRSS) :
3447
- closestInjector.runInContext(() => guard(futureARS, futureRSS));
3447
+ runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));
3448
3448
  return wrapIntoObservable(guardVal).pipe(first());
3449
3449
  });
3450
3450
  return of(guardsMapped).pipe(prioritizedGuardValue());
@@ -3461,7 +3461,7 @@ function runCanDeactivate(component, currARS, currRSS, futureRSS, injector) {
3461
3461
  const guard = getTokenOrFunctionIdentity(c, closestInjector);
3462
3462
  const guardVal = isCanDeactivate(guard) ?
3463
3463
  guard.canDeactivate(component, currARS, currRSS, futureRSS) :
3464
- closestInjector.runInContext(() => guard(component, currARS, currRSS, futureRSS));
3464
+ runInInjectionContext(closestInjector, () => guard(component, currARS, currRSS, futureRSS));
3465
3465
  return wrapIntoObservable(guardVal).pipe(first());
3466
3466
  });
3467
3467
  return of(canDeactivateObservables).pipe(prioritizedGuardValue());
@@ -3475,7 +3475,7 @@ function runCanLoadGuards(injector, route, segments, urlSerializer) {
3475
3475
  const guard = getTokenOrFunctionIdentity(injectionToken, injector);
3476
3476
  const guardVal = isCanLoad(guard) ?
3477
3477
  guard.canLoad(route, segments) :
3478
- injector.runInContext(() => guard(route, segments));
3478
+ runInInjectionContext(injector, () => guard(route, segments));
3479
3479
  return wrapIntoObservable(guardVal);
3480
3480
  });
3481
3481
  return of(canLoadObservables)
@@ -3496,7 +3496,7 @@ function runCanMatchGuards(injector, route, segments, urlSerializer) {
3496
3496
  const guard = getTokenOrFunctionIdentity(injectionToken, injector);
3497
3497
  const guardVal = isCanMatch(guard) ?
3498
3498
  guard.canMatch(route, segments) :
3499
- injector.runInContext(() => guard(route, segments));
3499
+ runInInjectionContext(injector, () => guard(route, segments));
3500
3500
  return wrapIntoObservable(guardVal);
3501
3501
  });
3502
3502
  return of(canMatchObservables)
@@ -3627,6 +3627,9 @@ function matchWithChecks(segmentGroup, route, segments, injector, urlSerializer)
3627
3627
  .pipe(map((v) => v === true ? result : { ...noMatch }));
3628
3628
  }
3629
3629
  function match(segmentGroup, route, segments) {
3630
+ if (route.path === '**') {
3631
+ return createWildcardMatchResult(segments);
3632
+ }
3630
3633
  if (route.path === '') {
3631
3634
  if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {
3632
3635
  return { ...noMatch };
@@ -3659,6 +3662,15 @@ function match(segmentGroup, route, segments) {
3659
3662
  positionalParamSegments: res.posParams ?? {}
3660
3663
  };
3661
3664
  }
3665
+ function createWildcardMatchResult(segments) {
3666
+ return {
3667
+ matched: true,
3668
+ parameters: segments.length > 0 ? last(segments).parameters : {},
3669
+ consumedSegments: segments,
3670
+ remainingSegments: [],
3671
+ positionalParamSegments: {},
3672
+ };
3673
+ }
3662
3674
  function split(segmentGroup, consumedSegments, slicedSegments, config) {
3663
3675
  if (slicedSegments.length > 0 &&
3664
3676
  containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {
@@ -3727,9 +3739,6 @@ function isImmediateMatch(route, rawSegment, segments, outlet) {
3727
3739
  (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) {
3728
3740
  return false;
3729
3741
  }
3730
- if (route.path === '**') {
3731
- return true;
3732
- }
3733
3742
  return match(rawSegment, route, segments).matched;
3734
3743
  }
3735
3744
  function noLeftoversInUrl(segmentGroup, segments, outlet) {
@@ -3889,8 +3898,7 @@ class Recognizer {
3889
3898
  return noMatch$1(rawSegment);
3890
3899
  }
3891
3900
  expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) {
3892
- const { matched, consumedSegments, positionalParamSegments, remainingSegments, } = route.path === '**' ? createWildcardMatchResult(segments) :
3893
- match(segmentGroup, route, segments);
3901
+ const { matched, consumedSegments, positionalParamSegments, remainingSegments, } = match(segmentGroup, route, segments);
3894
3902
  if (!matched)
3895
3903
  return noMatch$1(segmentGroup);
3896
3904
  // TODO(atscott): Move all of this under an if(ngDevMode) as a breaking change and allow stack
@@ -3913,18 +3921,14 @@ class Recognizer {
3913
3921
  }));
3914
3922
  }
3915
3923
  matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet) {
3916
- let matchResult;
3924
+ const matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer);
3917
3925
  if (route.path === '**') {
3918
- matchResult = of(createWildcardMatchResult(segments));
3919
3926
  // Prior versions of the route matching algorithm would stop matching at the wildcard route.
3920
3927
  // We should investigate a better strategy for any existing children. Otherwise, these
3921
3928
  // child segments are silently dropped from the navigation.
3922
3929
  // https://github.com/angular/angular/issues/40089
3923
3930
  rawSegment.children = {};
3924
3931
  }
3925
- else {
3926
- matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer);
3927
- }
3928
3932
  return matchResult.pipe(switchMap((result) => {
3929
3933
  if (!result.matched) {
3930
3934
  return noMatch$1(rawSegment);
@@ -4056,15 +4060,6 @@ function getData(route) {
4056
4060
  function getResolve(route) {
4057
4061
  return route.resolve || {};
4058
4062
  }
4059
- function createWildcardMatchResult(segments) {
4060
- return {
4061
- matched: true,
4062
- parameters: segments.length > 0 ? last(segments).parameters : {},
4063
- consumedSegments: segments,
4064
- remainingSegments: [],
4065
- positionalParamSegments: {},
4066
- };
4067
- }
4068
4063
 
4069
4064
  function recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) {
4070
4065
  return mergeMap(t => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy)
@@ -4079,27 +4074,31 @@ function resolveData(paramsInheritanceStrategy, injector) {
4079
4074
  if (!canActivateChecks.length) {
4080
4075
  return of(t);
4081
4076
  }
4082
- const routesWithResolversToRun = canActivateChecks.map(check => check.route);
4083
- const routesWithResolversSet = new Set(routesWithResolversToRun);
4084
- const routesNeedingDataUpdates =
4085
- // List all ActivatedRoutes in an array, starting from the parent of the first route to run
4086
- // resolvers. We go from the parent because the first route might have siblings that also
4087
- // run resolvers.
4088
- flattenRouteTree(routesWithResolversToRun[0].parent)
4089
- // Remove the parent from the list -- we do not need to recompute its inherited data
4090
- // because no resolvers at or above it run.
4091
- .slice(1);
4077
+ // Iterating a Set in javascript happens in insertion order so it is safe to use a `Set` to
4078
+ // preserve the correct order that the resolvers should run in.
4079
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#description
4080
+ const routesWithResolversToRun = new Set(canActivateChecks.map(check => check.route));
4081
+ const routesNeedingDataUpdates = new Set();
4082
+ for (const route of routesWithResolversToRun) {
4083
+ if (routesNeedingDataUpdates.has(route)) {
4084
+ continue;
4085
+ }
4086
+ // All children under the route with a resolver to run need to recompute inherited data.
4087
+ for (const newRoute of flattenRouteTree(route)) {
4088
+ routesNeedingDataUpdates.add(newRoute);
4089
+ }
4090
+ }
4092
4091
  let routesProcessed = 0;
4093
4092
  return from(routesNeedingDataUpdates)
4094
4093
  .pipe(concatMap(route => {
4095
- if (routesWithResolversSet.has(route)) {
4094
+ if (routesWithResolversToRun.has(route)) {
4096
4095
  return runResolve(route, targetSnapshot, paramsInheritanceStrategy, injector);
4097
4096
  }
4098
4097
  else {
4099
4098
  route.data = getInherited(route, route.parent, paramsInheritanceStrategy).resolve;
4100
4099
  return of(void 0);
4101
4100
  }
4102
- }), tap(() => routesProcessed++), takeLast(1), mergeMap(_ => routesProcessed === routesNeedingDataUpdates.length ? of(t) : EMPTY));
4101
+ }), tap(() => routesProcessed++), takeLast(1), mergeMap(_ => routesProcessed === routesNeedingDataUpdates.size ? of(t) : EMPTY));
4103
4102
  });
4104
4103
  }
4105
4104
  /**
@@ -4137,7 +4136,7 @@ function getResolver(injectionToken, futureARS, futureRSS, injector) {
4137
4136
  const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector);
4138
4137
  const resolverValue = resolver.resolve ?
4139
4138
  resolver.resolve(futureARS, futureRSS) :
4140
- closestInjector.runInContext(() => resolver(futureARS, futureRSS));
4139
+ runInInjectionContext(closestInjector, () => resolver(futureARS, futureRSS));
4141
4140
  return wrapIntoObservable(resolverValue);
4142
4141
  }
4143
4142
 
@@ -4200,10 +4199,10 @@ class TitleStrategy {
4200
4199
  getResolvedTitleForRoute(snapshot) {
4201
4200
  return snapshot.data[RouteTitleKey];
4202
4201
  }
4203
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4204
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4203
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4205
4204
  }
4206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: TitleStrategy, decorators: [{
4205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: TitleStrategy, decorators: [{
4207
4206
  type: Injectable,
4208
4207
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
4209
4208
  }] });
@@ -4226,10 +4225,10 @@ class DefaultTitleStrategy extends TitleStrategy {
4226
4225
  this.title.setTitle(title);
4227
4226
  }
4228
4227
  }
4229
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4230
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4229
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4231
4230
  }
4232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4233
4232
  type: Injectable,
4234
4233
  args: [{ providedIn: 'root' }]
4235
4234
  }], ctorParameters: () => [{ type: i1.Title }] });
@@ -4307,10 +4306,10 @@ class RouterConfigLoader {
4307
4306
  this.childrenLoaders.set(route, loader);
4308
4307
  return loader;
4309
4308
  }
4310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4311
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4309
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4310
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4312
4311
  }
4313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterConfigLoader, decorators: [{
4312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterConfigLoader, decorators: [{
4314
4313
  type: Injectable,
4315
4314
  args: [{ providedIn: 'root' }]
4316
4315
  }] });
@@ -4378,10 +4377,10 @@ function maybeUnwrapDefaultExport(input) {
4378
4377
  * @publicApi
4379
4378
  */
4380
4379
  class UrlHandlingStrategy {
4381
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4382
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4380
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4381
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4383
4382
  }
4384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4385
4384
  type: Injectable,
4386
4385
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
4387
4386
  }] });
@@ -4398,10 +4397,10 @@ class DefaultUrlHandlingStrategy {
4398
4397
  merge(newUrlPart, wholeUrl) {
4399
4398
  return newUrlPart;
4400
4399
  }
4401
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4402
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4400
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4401
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4403
4402
  }
4404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4405
4404
  type: Injectable,
4406
4405
  args: [{ providedIn: 'root' }]
4407
4406
  }] });
@@ -4770,7 +4769,21 @@ class NavigationTransitions {
4770
4769
  overallTransitionState.resolve(router.errorHandler(e));
4771
4770
  }
4772
4771
  catch (ee) {
4773
- overallTransitionState.reject(ee);
4772
+ // TODO(atscott): consider flipping the default behavior of
4773
+ // resolveNavigationPromiseOnError to be `resolve(false)` when
4774
+ // undefined. This is the most sane thing to do given that
4775
+ // applications very rarely handle the promise rejection and, as a
4776
+ // result, would get "unhandled promise rejection" console logs.
4777
+ // The vast majority of applications would not be affected by this
4778
+ // change so omitting a migration seems reasonable. Instead,
4779
+ // applications that rely on rejection can specifically opt-in to the
4780
+ // old behavior.
4781
+ if (this.options.resolveNavigationPromiseOnError) {
4782
+ overallTransitionState.resolve(false);
4783
+ }
4784
+ else {
4785
+ overallTransitionState.reject(ee);
4786
+ }
4774
4787
  }
4775
4788
  }
4776
4789
  return EMPTY;
@@ -4810,10 +4823,10 @@ class NavigationTransitions {
4810
4823
  return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
4811
4824
  !this.currentTransition?.extras.skipLocationChange;
4812
4825
  }
4813
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4814
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4826
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4827
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4815
4828
  }
4816
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: NavigationTransitions, decorators: [{
4829
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: NavigationTransitions, decorators: [{
4817
4830
  type: Injectable,
4818
4831
  args: [{ providedIn: 'root' }]
4819
4832
  }], ctorParameters: () => [] });
@@ -4829,10 +4842,10 @@ function isBrowserTriggeredNavigation(source) {
4829
4842
  * @publicApi
4830
4843
  */
4831
4844
  class RouteReuseStrategy {
4832
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4833
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4845
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4846
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4834
4847
  }
4835
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4848
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4836
4849
  type: Injectable,
4837
4850
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
4838
4851
  }] });
@@ -4883,19 +4896,19 @@ class BaseRouteReuseStrategy {
4883
4896
  }
4884
4897
  }
4885
4898
  class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
4886
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4887
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4900
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4888
4901
  }
4889
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4890
4903
  type: Injectable,
4891
4904
  args: [{ providedIn: 'root' }]
4892
4905
  }] });
4893
4906
 
4894
4907
  class StateManager {
4895
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4896
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4908
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4909
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4897
4910
  }
4898
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: StateManager, decorators: [{
4911
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: StateManager, decorators: [{
4899
4912
  type: Injectable,
4900
4913
  args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
4901
4914
  }] });
@@ -5072,10 +5085,10 @@ class HistoryStateManager extends StateManager {
5072
5085
  }
5073
5086
  return { navigationId };
5074
5087
  }
5075
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5076
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5088
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5089
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5077
5090
  }
5078
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: HistoryStateManager, decorators: [{
5091
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: HistoryStateManager, decorators: [{
5079
5092
  type: Injectable,
5080
5093
  args: [{ providedIn: 'root' }]
5081
5094
  }] });
@@ -5258,6 +5271,8 @@ class Router {
5258
5271
  else if (e instanceof RedirectRequest) {
5259
5272
  const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl);
5260
5273
  const extras = {
5274
+ // Persist transient navigation info from the original navigation request.
5275
+ info: currentTransition.extras.info,
5261
5276
  skipLocationChange: currentTransition.extras.skipLocationChange,
5262
5277
  // The URL is already updated at this point if we have 'eager' URL
5263
5278
  // updates or if the navigation was triggered by the browser (back
@@ -5543,9 +5558,9 @@ class Router {
5543
5558
  * @param extras An options object that determines how the URL should be constructed or
5544
5559
  * interpreted.
5545
5560
  *
5546
- * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation
5547
- * fails,
5548
- * or is rejected on error.
5561
+ * @returns A Promise that resolves to `true` when navigation succeeds, or `false` when navigation
5562
+ * fails. The Promise is rejected when an error occurs if `resolveNavigationPromiseOnError` is
5563
+ * not `true`.
5549
5564
  *
5550
5565
  * @usageNotes
5551
5566
  *
@@ -5648,10 +5663,10 @@ class Router {
5648
5663
  return Promise.reject(e);
5649
5664
  });
5650
5665
  }
5651
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5652
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: Router, providedIn: 'root' }); }
5666
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5667
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: Router, providedIn: 'root' }); }
5653
5668
  }
5654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: Router, decorators: [{
5669
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: Router, decorators: [{
5655
5670
  type: Injectable,
5656
5671
  args: [{ providedIn: 'root' }]
5657
5672
  }], ctorParameters: () => [] });
@@ -5922,10 +5937,10 @@ class RouterLink {
5922
5937
  preserveFragment: this.preserveFragment,
5923
5938
  });
5924
5939
  }
5925
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", 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 }); }
5926
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.1.0-next.1", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 }); }
5940
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", 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 }); }
5941
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.1.0-next.3", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 }); }
5927
5942
  }
5928
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterLink, decorators: [{
5943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterLink, decorators: [{
5929
5944
  type: Directive,
5930
5945
  args: [{
5931
5946
  selector: '[routerLink]',
@@ -6148,10 +6163,10 @@ class RouterLinkActive {
6148
6163
  const isActiveCheckFn = this.isLinkActive(this.router);
6149
6164
  return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);
6150
6165
  }
6151
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
6152
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0-next.1", 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 }); }
6166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
6167
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0-next.3", 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 }); }
6153
6168
  }
6154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterLinkActive, decorators: [{
6169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterLinkActive, decorators: [{
6155
6170
  type: Directive,
6156
6171
  args: [{
6157
6172
  selector: '[routerLinkActive]',
@@ -6203,10 +6218,10 @@ class PreloadAllModules {
6203
6218
  preload(route, fn) {
6204
6219
  return fn().pipe(catchError(() => of(null)));
6205
6220
  }
6206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6207
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6222
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6208
6223
  }
6209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: PreloadAllModules, decorators: [{
6224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: PreloadAllModules, decorators: [{
6210
6225
  type: Injectable,
6211
6226
  args: [{ providedIn: 'root' }]
6212
6227
  }] });
@@ -6223,10 +6238,10 @@ class NoPreloading {
6223
6238
  preload(route, fn) {
6224
6239
  return of(null);
6225
6240
  }
6226
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6227
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6241
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6242
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6228
6243
  }
6229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: NoPreloading, decorators: [{
6244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: NoPreloading, decorators: [{
6230
6245
  type: Injectable,
6231
6246
  args: [{ providedIn: 'root' }]
6232
6247
  }] });
@@ -6319,10 +6334,10 @@ class RouterPreloader {
6319
6334
  }
6320
6335
  });
6321
6336
  }
6322
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6323
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6337
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6338
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6324
6339
  }
6325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterPreloader, decorators: [{
6340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterPreloader, decorators: [{
6326
6341
  type: Injectable,
6327
6342
  args: [{ providedIn: 'root' }]
6328
6343
  }], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
@@ -6415,10 +6430,10 @@ class RouterScroller {
6415
6430
  this.routerEventsSubscription?.unsubscribe();
6416
6431
  this.scrollEventsSubscription?.unsubscribe();
6417
6432
  }
6418
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6419
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterScroller }); }
6433
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6434
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterScroller }); }
6420
6435
  }
6421
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterScroller, decorators: [{
6436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterScroller, decorators: [{
6422
6437
  type: Injectable
6423
6438
  }], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
6424
6439
 
@@ -6874,7 +6889,7 @@ function withNavigationErrorHandler(fn) {
6874
6889
  const injector = inject(EnvironmentInjector);
6875
6890
  inject(Router).events.subscribe((e) => {
6876
6891
  if (e instanceof NavigationError) {
6877
- injector.runInContext(() => fn(e));
6892
+ runInInjectionContext(injector, () => fn(e));
6878
6893
  }
6879
6894
  });
6880
6895
  }
@@ -7059,11 +7074,11 @@ class RouterModule {
7059
7074
  providers: [{ provide: ROUTES, multi: true, useValue: routes }],
7060
7075
  };
7061
7076
  }
7062
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7063
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7064
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterModule }); }
7077
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7078
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7079
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterModule }); }
7065
7080
  }
7066
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.1", ngImport: i0, type: RouterModule, decorators: [{
7081
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.3", ngImport: i0, type: RouterModule, decorators: [{
7067
7082
  type: NgModule,
7068
7083
  args: [{
7069
7084
  imports: ROUTER_DIRECTIVES,
@@ -7208,7 +7223,7 @@ function mapToResolve(provider) {
7208
7223
  /**
7209
7224
  * @publicApi
7210
7225
  */
7211
- const VERSION = new Version('17.1.0-next.1');
7226
+ const VERSION = new Version('17.1.0-next.3');
7212
7227
 
7213
7228
  /**
7214
7229
  * @module