Angular guard中的canActivate函数执行了两次

Angular canActivate function in guard executed twice

我正在使用 Angular 8,如果满足特定条件,我会使用 window.open(url) 在单独的选项卡中打开一个页面,然后returns false 因为我不想离开我所在的当前页面。

我在 canActivate 函数中执行此逻辑:

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot):
                                      Observable<boolean | UrlTree> | 
                                      Promise<boolean | UrlTree> | boolean | UrlTree {
  if(condition)  
    window.open(url)

  return false;
}

我的问题是 canActivate 函数被连续调用两次,导致新选项卡打开两次。 我该如何解决?

这就是我在 app.routing.constant

找到我的守卫的方式
{
    path: dashboardRoutes.MY_ROUTE,
    component: BlankComponent,
    canActivate: [MyGuard]
},

发现问题,我在html组件中使用[routerLink]路由,在ts中使用this.router.navigate路由,所以这个func真的被调用了两次。我的错误,希望这可以帮助任何有类似问题的人