feat(router): ability to provide custom route reuse strategy via DI for RouterTestingModule
(#42434)
For now it's not possible to provide custom route reuse strategy via DI for `RouterTestingModule`, only imperative instantiation. These changes makes it possible to provide custom route reuse strategy via DI. PR Close #42434
This commit is contained in:
parent
72c03a0d4f
commit
dbae00195e
@ -5647,6 +5647,17 @@ describe('Integration', () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
it('should be injectable', () => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [RouterTestingModule],
|
||||||
|
providers: [{provide: RouteReuseStrategy, useClass: AttachDetachReuseStrategy}]
|
||||||
|
});
|
||||||
|
|
||||||
|
const router = TestBed.inject(Router);
|
||||||
|
|
||||||
|
expect(router.routeReuseStrategy).toBeInstanceOf(AttachDetachReuseStrategy);
|
||||||
|
});
|
||||||
|
|
||||||
it('should support attaching & detaching fragments',
|
it('should support attaching & detaching fragments',
|
||||||
fakeAsync(inject([Router, Location], (router: Router, location: Location) => {
|
fakeAsync(inject([Router, Location], (router: Router, location: Location) => {
|
||||||
const fixture = createRoot(router, RootCmp);
|
const fixture = createRoot(router, RootCmp);
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
import {Location, LocationStrategy} from '@angular/common';
|
import {Location, LocationStrategy} from '@angular/common';
|
||||||
import {MockLocationStrategy, SpyLocation} from '@angular/common/testing';
|
import {MockLocationStrategy, SpyLocation} from '@angular/common/testing';
|
||||||
import {Compiler, Injectable, Injector, ModuleWithProviders, NgModule, NgModuleFactory, NgModuleFactoryLoader, Optional} from '@angular/core';
|
import {Compiler, Injectable, Injector, ModuleWithProviders, NgModule, NgModuleFactory, NgModuleFactoryLoader, Optional} from '@angular/core';
|
||||||
import {ChildrenOutletContexts, ExtraOptions, NoPreloading, PreloadingStrategy, provideRoutes, Route, Router, ROUTER_CONFIGURATION, RouterModule, ROUTES, Routes, UrlHandlingStrategy, UrlSerializer, ɵassignExtraOptionsToRouter as assignExtraOptionsToRouter, ɵflatten as flatten, ɵROUTER_PROVIDERS as ROUTER_PROVIDERS} from '@angular/router';
|
import {ChildrenOutletContexts, ExtraOptions, NoPreloading, PreloadingStrategy, provideRoutes, Route, Router, ROUTER_CONFIGURATION, RouteReuseStrategy, RouterModule, ROUTES, Routes, UrlHandlingStrategy, UrlSerializer, ɵassignExtraOptionsToRouter as assignExtraOptionsToRouter, ɵflatten as flatten, ɵROUTER_PROVIDERS as ROUTER_PROVIDERS} from '@angular/router';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -115,7 +115,8 @@ export function setupTestingRouter(
|
|||||||
export function setupTestingRouter(
|
export function setupTestingRouter(
|
||||||
urlSerializer: UrlSerializer, contexts: ChildrenOutletContexts, location: Location,
|
urlSerializer: UrlSerializer, contexts: ChildrenOutletContexts, location: Location,
|
||||||
loader: NgModuleFactoryLoader, compiler: Compiler, injector: Injector, routes: Route[][],
|
loader: NgModuleFactoryLoader, compiler: Compiler, injector: Injector, routes: Route[][],
|
||||||
opts?: ExtraOptions|UrlHandlingStrategy, urlHandlingStrategy?: UrlHandlingStrategy) {
|
opts?: ExtraOptions|UrlHandlingStrategy, urlHandlingStrategy?: UrlHandlingStrategy,
|
||||||
|
routeReuseStrategy?: RouteReuseStrategy) {
|
||||||
const router = new Router(
|
const router = new Router(
|
||||||
null!, urlSerializer, contexts, location, injector, loader, compiler, flatten(routes));
|
null!, urlSerializer, contexts, location, injector, loader, compiler, flatten(routes));
|
||||||
if (opts) {
|
if (opts) {
|
||||||
@ -131,6 +132,11 @@ export function setupTestingRouter(
|
|||||||
if (urlHandlingStrategy) {
|
if (urlHandlingStrategy) {
|
||||||
router.urlHandlingStrategy = urlHandlingStrategy;
|
router.urlHandlingStrategy = urlHandlingStrategy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (routeReuseStrategy) {
|
||||||
|
router.routeReuseStrategy = routeReuseStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
return router;
|
return router;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,7 +176,8 @@ export function setupTestingRouter(
|
|||||||
useFactory: setupTestingRouter,
|
useFactory: setupTestingRouter,
|
||||||
deps: [
|
deps: [
|
||||||
UrlSerializer, ChildrenOutletContexts, Location, NgModuleFactoryLoader, Compiler, Injector,
|
UrlSerializer, ChildrenOutletContexts, Location, NgModuleFactoryLoader, Compiler, Injector,
|
||||||
ROUTES, ROUTER_CONFIGURATION, [UrlHandlingStrategy, new Optional()]
|
ROUTES, ROUTER_CONFIGURATION, [UrlHandlingStrategy, new Optional()],
|
||||||
|
[RouteReuseStrategy, new Optional()]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{provide: PreloadingStrategy, useExisting: NoPreloading}, provideRoutes([])
|
{provide: PreloadingStrategy, useExisting: NoPreloading}, provideRoutes([])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user