fix(router): fix matrix params check to handle 'special' objects

This commit is contained in:
vsavkin 2016-08-07 18:34:12 -07:00 committed by Alex Rickabaugh
parent 0bd97ecda2
commit d2d36c61f3
2 changed files with 12 additions and 1 deletions

View File

@ -35,11 +35,16 @@ export function createUrlTree(
} }
function validateCommands(n: NormalizedNavigationCommands): void { function validateCommands(n: NormalizedNavigationCommands): void {
if (n.isAbsolute && n.commands.length > 0 && (typeof n.commands[0] === 'object')) { if (n.isAbsolute && n.commands.length > 0 && isMatrixParams(n.commands[0])) {
throw new Error('Root segment cannot have matrix parameters'); throw new Error('Root segment cannot have matrix parameters');
} }
} }
function isMatrixParams(command: any): boolean {
return typeof command === 'object' && command.outlets === undefined &&
command.segmentPath === undefined;
}
function tree( function tree(
oldSegmentGroup: UrlSegmentGroup, newSegmentGroup: UrlSegmentGroup, urlTree: UrlTree, oldSegmentGroup: UrlSegmentGroup, newSegmentGroup: UrlSegmentGroup, urlTree: UrlTree,
queryParams: Params, fragment: string): UrlTree { queryParams: Params, fragment: string): UrlTree {

View File

@ -54,6 +54,12 @@ describe('createUrlTree', () => {
expect(serializer.serialize(t)).toEqual('/a/11/d(right:c)'); expect(serializer.serialize(t)).toEqual('/a/11/d(right:c)');
}); });
it('should support updating secondary segments (absolute)', () => {
const p = serializer.parse('/a(right:b)');
const t = createRoot(p, ['/', {outlets: {right: ['c']}}]);
expect(serializer.serialize(t)).toEqual('/a(right:c)');
});
it('should support updating secondary segments', () => { it('should support updating secondary segments', () => {
const p = serializer.parse('/a(right:b)'); const p = serializer.parse('/a(right:b)');
const t = createRoot(p, [{outlets: {right: ['c', 11, 'd']}}]); const t = createRoot(p, [{outlets: {right: ['c', 11, 'd']}}]);