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

canActivate: [AuthGuard]


效果很好。

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

因此,从逻辑上讲,我只是想将结果取反! AuthGuard上的运算符

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


但是这种方法会引发错误


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


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

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

谢谢!!

最佳答案

不,但是您可以尝试

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


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

关于javascript - 是否可以在Angular路由防护器上使用否定运算符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43514278/

10-13 00:42