我在这个具体问题上看到了一些问题。
我最近只处理angular2项目。无论如何我现在正在讨论一个问题。在已弃用的路由器中,我在路由的数据部分添加了用户角色,我已经覆盖了routerOutlet,因此我可以在激活路由之前检查此值。)
目前我们可以按照我们可以调用的CanActivate类/接口行进行操作。
现在我希望能够为这样的CanActivate类提供权限(我已经打入了Enum)。在我通过访问我的SessionService来检查用户是否已登录之前,我现在需要检查用户是否具有某些权限。
正如我现在所看到的,我必须实现一个新的类,它为每个权限实现CanActivate。现在,这意味着我将拥有7.然而,我们处于这个确切项目的早期阶段,如果没有太多想法,我可以将其提高到11。
我在我之前看到的是一个实现,每个canActivate实现只需要花费大约3-5行。但是,在我可以提供属性或参数的实现中,我会感觉更有帮助。
不要想到我必须实现的类似的情况:
CanActivateIfUserHasPermissionsViewContentAndViewUsers甚至更长。
请注意,在我的情况下,权限基本上是多个操作。比如查看所有内容元素,或者编辑所有内容元素等。
答案 0 :(得分:1)
所以我找不到用params实现CanActivate的方法。
然而,我确实找到了一个对我来说似乎没问题的解决方法。 我有一个服务,我可以在Module构造上加载我的路由。 (我只是将它添加到模块的构造函数中)。我的路线现在包含数据{权限:[我在这里的值]}。在canActive钩子中检查了哪些,因为canActivate实现也使用相同的服务。
我的解决方案基于我对另一个问题的讨论:Angular2 RC5 Cross-Module Provider / Scanning