Angular2路由器CanActivate,带参数?

Mat*_*ers 5 angular-routing angular

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

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

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

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

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

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

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

CanActivateIfUserHasPermissionsViewContentAndViewUsers甚至更长.

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

Mat*_*ers 1

所以我没有找到一种方法来使用参数实现我的 CanActivate 。

不过,我确实找到了一种现在对我来说似乎不错的解决方法。我有一项服务,可以在模块构造中加载我的路线。(我只是将其添加到模块的构造函数中)。

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

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