fix(router): terminal route in custom matcher

This commit is contained in:
Sam Verschueren 2017-03-01 21:37:28 +01:00 committed by Alex Rickabaugh
parent 3b588fe2b0
commit b399cb26d9
2 changed files with 23 additions and 1 deletions

View File

@ -181,7 +181,9 @@ function match(segmentGroup: UrlSegmentGroup, route: Route, segments: UrlSegment
const posParams: {[n: string]: string} = {};
forEach(res.posParams !, (v: UrlSegment, k: string) => { posParams[k] = v.path; });
const parameters = {...posParams, ...res.consumed[res.consumed.length - 1].parameters};
const parameters = res.consumed.length > 0 ?
{...posParams, ...res.consumed[res.consumed.length - 1].parameters} :
posParams;
return {consumedSegments: res.consumed, lastChild: res.consumed.length, parameters};
}

View File

@ -658,6 +658,26 @@ describe('recognize', () => {
checkActivatedRoute(a.firstChild !, 'b', {}, ComponentB);
});
});
it('should work with terminal route', () => {
const matcher = (s: any, g: any, r: any) => s.length === 0 ? ({consumed: s}) : null;
checkRecognize([{matcher, component: ComponentA}] as any, '', (s: RouterStateSnapshot) => {
const a = s.root.firstChild !;
checkActivatedRoute(a, '', {}, ComponentA);
});
});
it('should work with child terminal route', () => {
const matcher = (s: any, g: any, r: any) => s.length === 0 ? ({consumed: s}) : null;
checkRecognize(
[{path: 'a', component: ComponentA, children: [{matcher, component: ComponentB}]}] as any,
'a', (s: RouterStateSnapshot) => {
const a = s.root.firstChild !;
checkActivatedRoute(a, 'a', {}, ComponentA);
});
});
});
describe('query parameters', () => {