保护中的角度canActivate函数执行了两次

问题描述

我使用的是Angular 8,我有一个防护,如果满足特定条件,可以使用window.open(url)在单独的选项卡中打开页面,然后返回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]
},

解决方法

发现了问题,我同时使用[routerLink]在html组件中以及使用this.router.navigate在ts中进行了路由,因此该功能确实被调用了两次。我的错,希望这可以对遇到类似问题的人有所帮助

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...