fix(router): update the router not to reset router state when updating root component (#11799)
This commit is contained in:
parent
212f8dbde7
commit
31dce72b7b
|
@ -323,7 +323,9 @@ export class Router {
|
||||||
*/
|
*/
|
||||||
resetRootComponentType(rootComponentType: Type<any>): void {
|
resetRootComponentType(rootComponentType: Type<any>): void {
|
||||||
this.rootComponentType = rootComponentType;
|
this.rootComponentType = rootComponentType;
|
||||||
this.currentRouterState = createEmptyState(this.currentUrlTree, this.rootComponentType);
|
// TODO: vsavkin router 4.0 should make the root component set to null
|
||||||
|
// this will simplify the lifecycle of the router.
|
||||||
|
this.currentRouterState.root.component = this.rootComponentType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,13 +6,31 @@
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {PreActivation} from '../src/router';
|
import {TestBed} from '@angular/core/testing';
|
||||||
|
|
||||||
|
import {PreActivation, Router} from '../src/router';
|
||||||
import {RouterOutletMap} from '../src/router_outlet_map';
|
import {RouterOutletMap} from '../src/router_outlet_map';
|
||||||
import {ActivatedRouteSnapshot, InheritedResolve, RouterStateSnapshot, createEmptyStateSnapshot} from '../src/router_state';
|
import {ActivatedRouteSnapshot, InheritedResolve, RouterStateSnapshot, createEmptyStateSnapshot} from '../src/router_state';
|
||||||
import {DefaultUrlSerializer} from '../src/url_tree';
|
import {DefaultUrlSerializer} from '../src/url_tree';
|
||||||
import {TreeNode} from '../src/utils/tree';
|
import {TreeNode} from '../src/utils/tree';
|
||||||
|
import {RouterTestingModule} from '../testing/router_testing_module';
|
||||||
|
|
||||||
describe('Router', () => {
|
describe('Router', () => {
|
||||||
|
describe('resetRootComponentType', () => {
|
||||||
|
class NewRootComponent {}
|
||||||
|
|
||||||
|
beforeEach(() => { TestBed.configureTestingModule({imports: [RouterTestingModule]}); });
|
||||||
|
|
||||||
|
it('should not change root route when updating the root component', () => {
|
||||||
|
const r: Router = TestBed.get(Router);
|
||||||
|
const root = r.routerState.root;
|
||||||
|
|
||||||
|
r.resetRootComponentType(NewRootComponent);
|
||||||
|
|
||||||
|
expect(r.routerState.root).toBe(root);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('PreActivation', () => {
|
describe('PreActivation', () => {
|
||||||
const serializer = new DefaultUrlSerializer();
|
const serializer = new DefaultUrlSerializer();
|
||||||
const inj = {get: (token: any) => () => `${token}_value`};
|
const inj = {get: (token: any) => () => `${token}_value`};
|
||||||
|
|
Loading…
Reference in New Issue