@ -695,6 +695,30 @@ describe('Integration', () => {
|
||||
|
||||
expect(e).toEqual('error');
|
||||
})));
|
||||
|
||||
it('should preserve resolved data',
|
||||
fakeAsync(inject([Router, Location], (router: Router, location: Location) => {
|
||||
const fixture = createRoot(router, RootCmp);
|
||||
|
||||
router.resetConfig([{
|
||||
path: 'parent',
|
||||
resolve: {two: 'resolveTwo'},
|
||||
children: [
|
||||
{path: 'child1', component: CollectParamsCmp},
|
||||
{path: 'child2', component: CollectParamsCmp}
|
||||
]
|
||||
}]);
|
||||
|
||||
let e: any = null;
|
||||
router.navigateByUrl('/parent/child1');
|
||||
advance(fixture);
|
||||
|
||||
router.navigateByUrl('/parent/child2');
|
||||
advance(fixture);
|
||||
|
||||
const cmp = fixture.debugElement.children[1].componentInstance;
|
||||
expect(cmp.route.snapshot.data).toEqual({two: 2});
|
||||
})));
|
||||
});
|
||||
|
||||
describe('router links', () => {
|
||||
@ -2102,9 +2126,9 @@ class CollectParamsCmp {
|
||||
private params: any = [];
|
||||
private urls: any = [];
|
||||
|
||||
constructor(a: ActivatedRoute) {
|
||||
a.params.forEach(p => this.params.push(p));
|
||||
a.url.forEach(u => this.urls.push(u));
|
||||
constructor(private route: ActivatedRoute) {
|
||||
route.params.forEach(p => this.params.push(p));
|
||||
route.url.forEach(u => this.urls.push(u));
|
||||
}
|
||||
|
||||
recordedUrls(): string[] {
|
||||
|
@ -219,26 +219,7 @@ describe('recognize', () => {
|
||||
[{path: 'a', resolve: {one: 'some-token'}, component: ComponentA}], 'a',
|
||||
(s: RouterStateSnapshot) => {
|
||||
const r: ActivatedRouteSnapshot = s.firstChild(s.root);
|
||||
expect(r._resolve.current).toEqual({one: 'some-token'});
|
||||
});
|
||||
});
|
||||
|
||||
it('should reuse componentless route\'s resolve', () => {
|
||||
checkRecognize(
|
||||
[{
|
||||
path: 'a',
|
||||
resolve: {one: 'one'},
|
||||
children: [
|
||||
{path: '', resolve: {two: 'two'}, component: ComponentB},
|
||||
{path: '', resolve: {three: 'three'}, component: ComponentC, outlet: 'aux'}
|
||||
]
|
||||
}],
|
||||
'a', (s: RouterStateSnapshot) => {
|
||||
const a: ActivatedRouteSnapshot = s.firstChild(s.root);
|
||||
const c: ActivatedRouteSnapshot[] = s.children(<any>a);
|
||||
|
||||
expect(c[0]._resolve.parent).toBe(a._resolve);
|
||||
expect(c[1]._resolve.parent).toBe(a._resolve);
|
||||
expect(r._resolve).toEqual({one: 'some-token'});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -8,9 +8,10 @@
|
||||
|
||||
import {TestBed} from '@angular/core/testing';
|
||||
|
||||
import {ResolveData} from '../src/config';
|
||||
import {PreActivation, Router} from '../src/router';
|
||||
import {RouterOutletMap} from '../src/router_outlet_map';
|
||||
import {ActivatedRouteSnapshot, InheritedResolve, RouterStateSnapshot, createEmptyStateSnapshot} from '../src/router_state';
|
||||
import {ActivatedRouteSnapshot, RouterStateSnapshot, createEmptyStateSnapshot} from '../src/router_state';
|
||||
import {DefaultUrlSerializer} from '../src/url_tree';
|
||||
import {TreeNode} from '../src/utils/tree';
|
||||
import {RouterTestingModule} from '../testing/router_testing_module';
|
||||
@ -39,7 +40,7 @@ describe('Router', () => {
|
||||
beforeEach(() => { empty = createEmptyStateSnapshot(serializer.parse('/'), null); });
|
||||
|
||||
it('should resolve data', () => {
|
||||
const r = new InheritedResolve(InheritedResolve.empty, {data: 'resolver'});
|
||||
const r = {data: 'resolver'};
|
||||
const n = createActivatedRouteSnapshot('a', {resolve: r});
|
||||
const s = new RouterStateSnapshot('url', new TreeNode(empty.root, [new TreeNode(n, [])]));
|
||||
|
||||
@ -49,10 +50,10 @@ describe('Router', () => {
|
||||
});
|
||||
|
||||
it('should wait for the parent resolve to complete', () => {
|
||||
const parentResolve = new InheritedResolve(InheritedResolve.empty, {data: 'resolver'});
|
||||
const childResolve = new InheritedResolve(parentResolve, {});
|
||||
const parentResolve = {data: 'resolver'};
|
||||
const childResolve = {};
|
||||
|
||||
const parent = createActivatedRouteSnapshot('a', {resolve: parentResolve});
|
||||
const parent = createActivatedRouteSnapshot(null, {resolve: parentResolve});
|
||||
const child = createActivatedRouteSnapshot('b', {resolve: childResolve});
|
||||
|
||||
const s = new RouterStateSnapshot(
|
||||
@ -66,8 +67,8 @@ describe('Router', () => {
|
||||
});
|
||||
|
||||
it('should copy over data when creating a snapshot', () => {
|
||||
const r1 = new InheritedResolve(InheritedResolve.empty, {data: 'resolver1'});
|
||||
const r2 = new InheritedResolve(InheritedResolve.empty, {data: 'resolver2'});
|
||||
const r1 = {data: 'resolver1'};
|
||||
const r2 = {data: 'resolver2'};
|
||||
|
||||
const n1 = createActivatedRouteSnapshot('a', {resolve: r1});
|
||||
const s1 = new RouterStateSnapshot('url', new TreeNode(empty.root, [new TreeNode(n1, [])]));
|
||||
|
Reference in New Issue
Block a user