路由器可以使用 1 个以上的守卫激活

pha*_*cic 5 angular-routing angular

angular(v 4.1.1) 路由器是否canActivate具有多个功能

{
   path: '',
   component: SomeComponent,
   canActivate: [guard1, guard2, ...]
}
Run Code Online (Sandbox Code Playgroud)

这样的事情应该工作吗?如果不是,如果它假设只带一名警卫,他们为什么会在列表中

因为我有类似的东西,即使guard1返回falseguard2仍然会被执行。

提前致谢

角 4.1.1

Vla*_*nek 4

这应该可行,但我相信守卫是并行执行的,而不是按顺序执行的。因此第二个不会等到第一个返回值。如果你的守卫是同步的,这不会真正影响你,但如果它们是异步的,你就会遇到这个“问题”。

如果您需要守卫相互依赖,您可以将检查的公共部分分开,并且所有守卫都可以调用该逻辑。但我认为在大多数情况下这甚至是没有必要的,因为如果只有其中一个失败,则该路由不会被激活。

  • 使用 canactivate 守卫,如果 1 失败,则不会激活该路由。那么为什么要同时处决警卫呢?让它们按顺序运行并且在其中一个守卫失败时不执行其他守卫更有意义。并行运行的唯一好处是,如果所有守卫总是成功,那么您将获得性能提升。但是,即使其中 1 个失败,您也会遭受性能损失,因为最后路线必须等待所有守卫完成才能确定成功或失败。所以我认为它至少应该有配置顺序或并行的选项/设置 (2认同)