From c96aaeeab7f6aa5da066fe11bf9260ef20af6a81 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Thu, 17 Feb 2022 21:39:26 -0300 Subject: [PATCH] fix: look for correct outlet to back to --- .../src/lib/legacy/router/ns-location-utils.ts | 2 +- .../src/lib/legacy/router/page-router-outlet.ts | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/angular/src/lib/legacy/router/ns-location-utils.ts b/packages/angular/src/lib/legacy/router/ns-location-utils.ts index 95b24ff..200f8dd 100644 --- a/packages/angular/src/lib/legacy/router/ns-location-utils.ts +++ b/packages/angular/src/lib/legacy/router/ns-location-utils.ts @@ -51,7 +51,7 @@ export class Outlet { isNSEmptyOutlet: boolean; // Used in reuse-strategy by its children to determine if they should be detached too. - shouldDetach: boolean = true; + shouldDetach = true; constructor(outletKey: string, path: string, pathByOutlets: string, modalNavigationDepth?: number) { this.outletKeys = [outletKey]; this.isPageNavigationBack = false; diff --git a/packages/angular/src/lib/legacy/router/page-router-outlet.ts b/packages/angular/src/lib/legacy/router/page-router-outlet.ts index 1cab9c7..29e9585 100644 --- a/packages/angular/src/lib/legacy/router/page-router-outlet.ts +++ b/packages/angular/src/lib/legacy/router/page-router-outlet.ts @@ -327,8 +327,17 @@ export class PageRouterOutlet implements OnDestroy { // Add it to the new page this.viewUtil.appendChild(page, componentView); - const topActivatedRoute = findTopActivatedRouteNodeForOutlet(this._activatedRoute.snapshot); - const outletKey = this.locationStrategy.getRouteFullPath(topActivatedRoute); + let topActivatedRoute = findTopActivatedRouteNodeForOutlet(this._activatedRoute.snapshot); + let outletKey = this.locationStrategy.getRouteFullPath(topActivatedRoute); + const thisRouteKey = outletKey; + while (!this.locationStrategy.findOutlet(outletKey)) { + topActivatedRoute = topActivatedRoute.parent; + if (!topActivatedRoute) { + NativeScriptDebug.routerError('Could not find outlet for route: ' + thisRouteKey); + break; + } + outletKey = this.locationStrategy.getRouteFullPath(topActivatedRoute); + } const navigatedFromCallback = (global).Zone.current.wrap((args: NavigatedData) => { if (args.isBackNavigation) {