From b5e92b9a5d815139e0f2277fc637f5e982076fe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matias=20Niemel=C3=A4?= Date: Fri, 17 Apr 2020 14:08:16 -0700 Subject: [PATCH] Revert "fix(router): pass correct component to canDeactivate checks when using two or more sibling router-outlets (#36302)" (#36697) This reverts commit 80e6c07d89d74d71956fb1299c54f5353e255370. PR Close #36697 --- packages/router/src/utils/preactivation.ts | 16 ++++----- packages/router/test/integration.spec.ts | 38 ---------------------- 2 files changed, 6 insertions(+), 48 deletions(-) diff --git a/packages/router/src/utils/preactivation.ts b/packages/router/src/utils/preactivation.ts index a3624a152f..cb274cc974 100644 --- a/packages/router/src/utils/preactivation.ts +++ b/packages/router/src/utils/preactivation.ts @@ -83,7 +83,7 @@ function getChildRouteGuards( forEach( prevChildren, (v: TreeNode, k: string) => - deactivateRouteAndItsChildren(v, contexts!.getContext(k), contexts, checks)); + deactivateRouteAndItsChildren(v, contexts!.getContext(k), checks)); return checks; } @@ -127,7 +127,7 @@ function getRouteGuards( } } else { if (curr) { - deactivateRouteAndItsChildren(currNode, context, parentContexts, checks); + deactivateRouteAndItsChildren(currNode, context, checks); } checks.canActivateChecks.push(new CanActivate(futurePath)); @@ -172,21 +172,17 @@ function shouldRunGuardsAndResolvers( } function deactivateRouteAndItsChildren( - route: TreeNode, context: OutletContext|null, - parentContexts: ChildrenOutletContexts|null, checks: Checks): void { + route: TreeNode, context: OutletContext|null, checks: Checks): void { const children = nodeChildrenAsMap(route); const r = route.value; forEach(children, (node: TreeNode, childName: string) => { if (!r.component) { - deactivateRouteAndItsChildren( - node, parentContexts ? parentContexts.getContext(childName) : context, parentContexts, - checks); + deactivateRouteAndItsChildren(node, context, checks); } else if (context) { - deactivateRouteAndItsChildren( - node, context.children.getContext(childName), parentContexts, checks); + deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks); } else { - deactivateRouteAndItsChildren(node, null, parentContexts, checks); + deactivateRouteAndItsChildren(node, null, checks); } }); diff --git a/packages/router/test/integration.spec.ts b/packages/router/test/integration.spec.ts index 1dcf40ecf9..358f4ccc46 100644 --- a/packages/router/test/integration.spec.ts +++ b/packages/router/test/integration.spec.ts @@ -3046,44 +3046,6 @@ describe('Integration', () => { expect(location.path()).toEqual('/two-outlets/(a)'); }))); - it('should call canDeactivate handler with each deactivated component', - fakeAsync(inject([Router, Location], (router: Router, location: Location) => { - const fixture = createRoot(router, TwoOutletsCmp); - - router.resetConfig([ - { - path: 'a', - children: [ - { - path: 'b1', - component: BlankCmp, - canDeactivate: ['RecordingDeactivate'], - }, - { - path: 'b2', - canDeactivate: ['RecordingDeactivate'], - component: SimpleCmp, - outlet: 'aux', - }, - ], - }, - { - path: 'c', - component: BlankCmp, - }, - ]); - - router.navigate(['/a', {outlets: {primary: ['b1'], aux: ['b2']}}]); - advance(fixture); - expect(location.path()).toEqual('/a/(b1//aux:b2)'); - - router.navigate(['/c']); - advance(fixture); - - expect(log[0].component).toBeAnInstanceOf(BlankCmp); - expect(log[1].component).toBeAnInstanceOf(SimpleCmp); - }))); - it('works with a nested route', fakeAsync(inject([Router, Location], (router: Router, location: Location) => { const fixture = createRoot(router, RootCmp);