fix(router): process empty path segment when preceding a named outlet (#26243)
PR Close #10726 PR Close #26243
This commit is contained in:
parent
ccc77ca441
commit
20cef5078d
|
@ -70,6 +70,14 @@ class Recognizer {
|
|||
processSegmentGroup(config: Route[], segmentGroup: UrlSegmentGroup, outlet: string):
|
||||
TreeNode<ActivatedRouteSnapshot>[] {
|
||||
if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {
|
||||
const empties = config.filter(r => emptyPathMatch(segmentGroup, segmentGroup.segments, r));
|
||||
if (empties.length !== 0) {
|
||||
try {
|
||||
return this.processSegment(empties, segmentGroup, segmentGroup.segments, outlet);
|
||||
} catch (e) {
|
||||
if (!(e instanceof NoMatch)) throw e;
|
||||
}
|
||||
}
|
||||
return this.processChildren(config, segmentGroup);
|
||||
}
|
||||
|
||||
|
|
|
@ -263,6 +263,20 @@ describe('recognize', () => {
|
|||
});
|
||||
});
|
||||
|
||||
it('should work with children outlets', () => {
|
||||
checkRecognize(
|
||||
[{
|
||||
path: '',
|
||||
component: ComponentA,
|
||||
children: [{path: 'b', outlet: 'b', component: ComponentB}]
|
||||
}],
|
||||
'(b:b)', (s: RouterStateSnapshot) => {
|
||||
checkActivatedRoute((s as any).firstChild(s.root) !, '', {}, ComponentA);
|
||||
checkActivatedRoute(
|
||||
(s as any).firstChild((s as any).firstChild(s.root)) !, 'b', {}, ComponentB, 'b');
|
||||
});
|
||||
});
|
||||
|
||||
it('should match when terminal', () => {
|
||||
checkRecognize(
|
||||
[{path: '', pathMatch: 'full', component: ComponentA}], '',
|
||||
|
|
Loading…
Reference in New Issue