为什么 Angular canActivate 函数守卫在导航路线时执行两次

des*_*ien 4 angular

我正在使用 Angular 5 并定义了一些路由。当我导航路线并在 canActivate 函数防护上放置断点时,我看到它执行了两次。

我问这个问题是因为我必须在每个 canActivate 调用上调用外部服务,并且多次无用地执行相同的服务会导致不必要的开销。

Jef*_*aal 5

刚刚发生在我身上,问题是我的以下代码片段AuthGuard

setActiveWebsite(website: string): void {
    this._website.next(website);
    this.router.navigate([]);  <-- This line here
}
Run Code Online (Sandbox Code Playgroud)

它执行了两次,因为它设置了一个值,重定向,然后跳过了身份验证,因为它解析为true立即。


您是否可能在您的或route.navigate之一中使用或重定向?guardsresolvers