Angular 在目标路由保护中重定向时如何停止双canDeactivate呼叫?

Angular 在目标路由保护中重定向时如何停止双canDeactivate呼叫?,angular,Angular,我需要将canDeactivateguard添加到我的一个应用程序路径中。在这个函数中,我调用nativeconfirm函数来确认用户是否真的想离开页面。若用户选择非警卫保护的路线,那个么一切看起来都很好 然而,当用户重定向到一个路由时,会出现一个问题,其中有一个守卫重定向到另一个页面。然后出现两次确认弹出窗口 我创造了一个简单的复制品 点击“禁止链接” 单击“确定” 弹出窗口出现两次 有没有什么方法可以解决这个问题而不需要一些老套的解决方案 can-deactivate.guard.ts @I

我需要将
canDeactivate
guard添加到我的一个应用程序路径中。在这个函数中,我调用native
confirm
函数来确认用户是否真的想离开页面。若用户选择非警卫保护的路线,那个么一切看起来都很好

然而,当用户重定向到一个路由时,会出现一个问题,其中有一个守卫重定向到另一个页面。然后出现两次确认弹出窗口

我创造了一个简单的复制品

  • 点击“禁止链接”
  • 单击“确定”
  • 弹出窗口出现两次
  • 有没有什么方法可以解决这个问题而不需要一些老套的解决方案

    can-deactivate.guard.ts

    @Injectable({providedIn:'root'})
    导出类CanDeactivateGuard实现CanDeactivate{
    canDeactivate():可观察的|承诺|布尔值{
    返回确认(“您确定要离开吗?”);
    }
    }
    
    can-activate.guard.ts

    导出类CanActivateGuard实现CanActivateGuard{
    构造函数(专用路由器:路由器){}
    canActivate():可观察的|承诺|布尔值{
    this.router.navigate(['/不允许']);
    返回false;
    }
    }
    
    这显然是“预期”行为: