Skip to content

Error: Cannot reattach ActivatedRouteSnapshot with a different number of children #1830

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
vahidvdn opened this issue May 20, 2019 · 19 comments

Comments

@vahidvdn
Copy link

vahidvdn commented May 20, 2019

Here is my routing:

const routes: Routes = [

    {
        path: "",
        redirectTo: "/tabs/default",
        pathMatch: "full"
    },
    {
        path: "tabs",
        loadChildren: "~/app/modules/tabs/tabs.module#TabsModule"
    },
    {
        path: "login",
        loadChildren: "~/app/modules/login/login.module#LoginModule"
    },
    {
        path: "register",
        loadChildren: "~/app/modules/register/register.module#RegisterModule"
    }

];

The scenario which leads to the error: First the app starts with tabs route, then I go to the login page, after that I go to register and then again I go to tabs page (and clean the history). After that if I go to login page again and get back to previous one (tabs page), the error occurs.

The error:

JS: Error: Cannot reattach ActivatedRouteSnapshot with a different number of children
JS:     at setFutureSnapshotsOfActivatedRoutes (file:///data/data/org.nativescript.tns57/files/app/tns_modules/@angular/router/bundles/router.umd.js:1950:19) [angular]
JS:     at setFutureSnapshotsOfActivatedRoutes (file:///data/data/org.nativescript.tns57/files/app/tns_modules/@angular/router/bundles/router.umd.js:1954:13) [angular]
JS:     at createNode (file:///data/data/org.nativescript.tns57/files/app/tns_modules/@angular/router/bundles/router.umd.js:1935:17) [angular]
JS:     at file:///data/data/org.nativescript.tns57/files/app/tns_modules/@angular/router/bundles/router.umd.js:1975:20 [angular]
JS:     at Array.map (<anonymous>) [angular]
JS:     at createOrReuseChildren (file:///data/data/org.nativescript.tns57/files/app/tns_modules/@angular/router/bundles/router.umd.js:1958:30) [angular]
JS:     at createNode (file:///data/data/org...

Any idea?

@vahidvdn
Copy link
Author

@NickIliev @tsonevn Any idea on this?

@jocafi
Copy link

jocafi commented Jun 20, 2019

same problem here, but I am using Angular 8.0

  {
    path: ':mode',
    loadChildren: () => import('./challenge-edit/challenge-edit.module').then( mod => mod.ChallengeEditModule)
  },

 "dependencies": {
        "@angular/animations": "~8.0.0",
        "@angular/common": "~8.0.0",
        "@angular/compiler": "~8.0.0",
        "@angular/core": "~8.0.0",
        "@angular/forms": "~8.0.0",
        "@angular/http": "~8.0.0-beta.10",
        "@angular/platform-browser": "~8.0.0",
        "@angular/platform-browser-dynamic": "~8.0.0",
        "@angular/router": "~8.0.0",
        "nativescript-angular": "~8.0.0",
        "nativescript-theme-core": "~1.0.6",
        "nativescript-ui-sidedrawer": "^6.0.0",
        "reflect-metadata": "~0.1.13",
        "rxjs": "~6.5.2",
        "tns-core-modules": "^5.4.1",
        "zone.js": "~0.9.1"
    },

JS: HMR: Hot Module Replacement Enabled. Waiting for signal.
JS: Angular is running in the development mode. Call enableProdMode() to enable the production mode.
JS: ERROR Error: Uncaught (in promise): Error: Cannot reattach ActivatedRouteSnapshot with a different number of children
JS: Error: Cannot reattach ActivatedRouteSnapshot with a different number of children
JS:     at setFutureSnapshotsOfActivatedRoutes (file:///data/data/org.nativescript.nsngcourse/files/app/vendor.js:78144:15) [angular]
JS:     at createNode (file:///data/data/org.nativescript.nsngcourse/files/app/vendor.js:78129:13) [angular]
JS:     at file:///data/data/org.nativescript.nsngcourse/files/app/vendor.js:78169:16 [angular]
JS:     at Array.map (<anonymous>) [angular]
JS:     at createOrReuseChildren (file:///data/data/org.nativescript.nsngcourse/files/app/vendor.js:78152:26) [angular]
JS:     at createNode (file:///data/data/org.nativescript.nsngcourse/files/app/vendor.js:78121:24) [angular]
JS:     at file:///data/data/org.nativescript.nsngcourse/files/app/vendor.js:78158:28 [angular]
JS:     at Array.map (<anonymous>) [angular]
JS:     at createOrReuseChildren (file:///data/data/org.nativescript.nsngcourse/files/app/vendor.js:78152:...


@vahidvdn
Copy link
Author

@jocafi Yes, unfortunately, there is no feedback from anyone. Hope this will be fixed in new Tab-View Redesign

@lostation
Copy link

lostation commented Jun 27, 2019

@vahidvdn Are you using router-outlet or page-router-outlet ?
It seems page-router-outlet handles correctly this issue and router-outlet not...unfortunately.

@vahidvdn
Copy link
Author

@lostation No, page-router-outlet doesn't handle it correctly. See here.
Also see the issue at the same repo.

@lostation
Copy link

lostation commented Jun 30, 2019 via email

@bpaczkowski-merix
Copy link

I'm not sure if it will be helpful but in my case, the solution to this error was to use the additional parameter skipLocationChange in options of navigate method.

Eg.

navigateToHome() {
    const navigationOptions: any = {
      clearHistory: true,
      animated: false,
      skipLocationChange: true
    };

    return this.routerExtensions.navigate([''], navigationOptions);
  }

@mpilija
Copy link

mpilija commented Jul 16, 2019

Hi Guys,

Any news on this? Got the same issue while navigating back:
this.routerExtensions.back();

@tskweres
Copy link

tskweres commented Sep 6, 2019

Same issue when using this.routerExtensions.back() with lazy-loaded tab routes

@phpdev90
Copy link

The same issue. Any idea?

@tskweres
Copy link

@bpaczkowski-merix solution with skipLocationChange in the transition worked for me

@alqabali
Copy link

some issue here!

@mhmdhmd
Copy link

mhmdhmd commented Dec 31, 2019

while navigating back use extra option in this.routerExtension.back()
use the following

this.routerExtension.back({relativeTo: this.activatedRoute});

i hope it handles correctly this issue

@prajilshresthaiw
Copy link

+1 for this issue.

@prajilshresthaiw
Copy link

while navigating back use extra option in this.routerExtension.back()
use the following

this.routerExtension.back({relativeTo: this.activatedRoute});

i hope it handles correctly this issue

This worked for me.

@cjohn001
Copy link

+1 for the issue.
using
this.routerExtension.back({relativeTo: this.activatedRoute});
does not help.

@PetroSuch
Copy link

Any idea about it ?

@PetroSuch
Copy link

Guys, what is the solve of the problem /

@PetroSuch
Copy link

i dont can use bottomnavigation inside my application, because i can go to component Tabs and but i can return back to him from different component

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests