繁体   English   中英

Angular2路由器CanActivate,带参数?

[英]Angular2 Router CanActivate, with Parameters?

我在这个具体问题上看到了一些问题。

我最近只处理angular2项目。 无论如何我现在正在讨论一个问题。 在已弃用的路由器中,我在路由的数据部分添加了用户角色,我已经覆盖了routerOutlet,因此我可以在激活路由之前检查此值)。

目前我们可以使用CanActivate类/接口行,我们可以调用它。

现在我希望能够为这样的CanActivate类提供权限(我已经打成了Enum)。 在我通过访问我的SessionService来检查用户是否已登录之前,我现在需要检查用户是否具有某些权限。

正如我现在所看到的,我必须实现一个新的类,它为每个权限实现CanActivate。 现在这意味着我将拥有7.然而,我们处于这个确切项目的早期阶段并且没有太多想到我可以将其提高到11。

我在我之前看到的是一个实现,每个canActivate实现只需要花费大约3-5行。 但是,通过我可以提供属性或参数的实现,我会感觉更有帮助。

不要想到我必须实现以下类的情况:

CanActivateIfUserHasPermissionsViewContentAndViewUsers甚至更长。

注意在我的情况下权限基本上是多个动作。 比如查看所有内容元素,或者编辑所有内容元素等。

所以我找不到用params实现CanActivate的方法。

然而,我找到了一个对我来说似乎很好的解决方法。 我有一个服务,我可以在Module构造上加载我的路由。 (我只是将它添加到模块的构造函数中)。

我的路线现在包含数据{权限:[我在这里的值]}。 在canActive钩子中检查了哪些,因为canActivate实现也使用相同的服务。

我的解决方案基于我对另一个问题的讨论: Angular2 RC5跨模块提供程序/扫描

暂无
暂无

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

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