繁体   English   中英

是否可以在Angular路由防护器上使用否定运算符?

[英]Is it possible to somehow use negation operator on an Angular route guard?

在我的angular 4应用程序中,我使用authGuard限制应用程序的某些页面,以防止未注册用户访问。 在这些具体路线中,我使用

canActivate: [AuthGuard]

效果很好。

我无法实现的是将其他页面的访问权限限制为具有相同AuthGuard的注册用户。 因此,例如,注册用户将无法导航以登录 / 注册页面。

因此,从逻辑上讲,我认为我会否定该结果 AuthGuard上的运算符

{
    path: 'sign-in',
    component: SignInComponent,
    canActivate: [!AuthGuard]
}

但是这种方法会引发错误

未捕获(承诺):错误:必须定义令牌!

我认为创建另一个路由保护程序只是为了返回相反的结果是一种不好的做法。

有什么办法可以使这种简单的方法起作用?

谢谢!!

不,但是您可以尝试

canActivate: [{provide: AuthGuard: useFactory: () => new AuthGuard(false)}]

并使用传递给AuthGuard的构造函数的AuthGuard

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM