Angular 2: NavigationCancel - Navigation ID 2 is not equal to the current navigation id 3

后端 未结 4 1995
北荒
北荒 2020-12-16 10:50

I\'m trying to redirect old URLs (links in email templates) from a previous site to another route like this:

if (route.url.indexOf(\'/#/\') !== -1) {
    thi         


        
相关标签:
4条回答
  • 2020-12-16 11:23

    I had the exact same problem, but found another cause to explain it.

    This was because of a HTML attribute href="#" on my anchor link where I had my onClick method calling the router.navigate().

    Detailed answer here:

    https://stackoverflow.com/a/61595269/3992814

    0 讨论(0)
  • 2020-12-16 11:32

    We got the same error. The problem was a custom component with an input field named routerLink that was used to customize a link. But this field caused Angular to do two navigations, leading to the 'Navigation ID 2 is not equal to the current navigation id 3' error.

    0 讨论(0)
  • 2020-12-16 11:41

    I got this error because I was calling router.navigate twice in quick succession, (1 to append queryParams, 1 to append a fragment) so had to refactor my code to only call navigate once.

    0 讨论(0)
  • 2020-12-16 11:46

    If you are generating routerLink through an array of routes from .ts file. And your routes contain resolvers...

    <ng-container *ngFor="let route of Routes">
        This
       <div [routerLink]="route">{{route}}</div>
        and This
       <div [routerLink]="[route]">{{route}}</div>
        and this too
       <div routerLink="{{route}}">{{route}}</div>
    </ng-container>
    

    then don't try this...with resolver...It won't work...

    The safer way is simply create a function in ts file.

    navigate(link: string): void
      {
        this.router.navigate([link]);
      }
    

    and call this function from html...like this

    <ng-container *ngFor="let route of Routes">
       <div (click)="navigate(route)">{{route}}</div>
    </ng-container>
    

    It will work fine....Happy Coding!!!

    0 讨论(0)
提交回复
热议问题