如何知道导航是否取消?

How to know whether the navigation is cancelled or not?

我正在导航到一条路线,但其中一名路线守卫在 Angular 13 中返回错误。 如何知道导航是完成还是取消。 我在下面做了,但然后阻止,最后阻止控制台甚至打印路由守卫 returns false.

this.router.navigate(['/user/admin/editor'])
      .then(() =>{
        console.log('then block');
        
      })
      .catch(() => {
        console.log('catch block');
        
      })
      .finally(() => {
        console.log('final block');
        
      });

您可以订阅the router events, more specifically, to the NavigationCancel活动:

this.router.events.pipe(
  filter(e => e instanceof NavigationCancel)
).subscribe(() => {
  console.log('navigation was cancelled');
})

我正在尝试为您提供可能的工作方式

您可以对包含 url.

event 变量实例使用过滤器
this.router.events.filter(e => e instanceof NavigationCancel && e.url.includes("Your Routes"))