Angular2路由器可以使用参数?

时间:2016-08-18 14:10:59

标签: angular angular-routing

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

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

目前我们可以按照我们可以调用的CanActivate类/接口行进行操作。

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

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

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

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

CanActivateIfUserHasPermissionsViewContentAndViewUsers甚至更长。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

我的解决方案基于我对另一个问题的讨论:Angular2 RC5 Cross-Module Provider / Scanning