fix(router): change processing url tree children condition (#26243)
stop adding next path of pathless activated route to the url PR Close #26224 PR Close #26243
This commit is contained in:
parent
f52600e261
commit
ccc77ca441
|
@ -147,14 +147,17 @@ function findStartingPosition(nav: Navigation, tree: UrlTree, route: ActivatedRo
|
|||
return new Position(tree.root, true, 0);
|
||||
}
|
||||
|
||||
const segmentGroup = route.snapshot._urlSegment;
|
||||
|
||||
if (route.snapshot._lastPathIndex === -1) {
|
||||
return new Position(route.snapshot._urlSegment, true, 0);
|
||||
// Pathless ActivatedRoute has _lastPathIndex === -1 but should not process children
|
||||
// see issue #26224
|
||||
return new Position(segmentGroup, segmentGroup.segments.length === 0, 0);
|
||||
}
|
||||
|
||||
const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;
|
||||
const index = route.snapshot._lastPathIndex + modifier;
|
||||
return createPositionApplyingDoubleDots(
|
||||
route.snapshot._urlSegment, index, nav.numberOfDoubleDots);
|
||||
return createPositionApplyingDoubleDots(segmentGroup, index, nav.numberOfDoubleDots);
|
||||
}
|
||||
|
||||
function createPositionApplyingDoubleDots(
|
||||
|
|
|
@ -233,6 +233,12 @@ describe('createUrlTree', () => {
|
|||
const t = create(p.root.children[PRIMARY_OUTLET], 1, p, [{outlets: {right: ['c']}}]);
|
||||
expect(serializer.serialize(t)).toEqual('/a/b/(right:c)');
|
||||
});
|
||||
|
||||
it('should support pathless route', () => {
|
||||
const p = serializer.parse('/a');
|
||||
const t = create(p.root.children[PRIMARY_OUTLET], -1, p, ['b']);
|
||||
expect(serializer.serialize(t)).toEqual('/b');
|
||||
});
|
||||
});
|
||||
|
||||
it('should set fragment', () => {
|
||||
|
@ -260,8 +266,8 @@ function create(
|
|||
expect(segment).toBeDefined();
|
||||
}
|
||||
const s = new (ActivatedRouteSnapshot as any)(
|
||||
[], <any>{}, <any>{}, '', <any>{}, PRIMARY_OUTLET, 'someComponent', null, <any>segment,
|
||||
startIndex, <any>null);
|
||||
segment.segments, <any>{}, <any>{}, '', <any>{}, PRIMARY_OUTLET, 'someComponent', null,
|
||||
<any>segment, startIndex, <any>null);
|
||||
const a = new (ActivatedRoute as any)(
|
||||
new BehaviorSubject(null !), new BehaviorSubject(null !), new BehaviorSubject(null !),
|
||||
new BehaviorSubject(null !), new BehaviorSubject(null !), PRIMARY_OUTLET, 'someComponent', s);
|
||||
|
|
Loading…
Reference in New Issue