假设我使用canActivate-Guard获得了一条路线。路径的路径只包含一个参数:xyzType。在路由的数据对象内,我为每个可能的指定了一组所需的权限:xyzType。
{
path: ':xyzType',
component: SuperSpecialComponent,
canActivate: [AuthGuard],
data: {
permissions: {
"type1": [
"add:type1", "edit:type1"
],
"type2": [
"add:type2", "edit:type2"
]
}
},
resolve: {
permissions: PermissionsResolver
}
}
PermissionResolver检查:xyzType参数得到的值并返回route.data ['permissions'] [:xyzType-value]。
因此,例如,如果在浏览器中调用'/ type1',则PermissionResolver返回
["add:type1", "edit:type1"]
我是否正确假设route.data ['permissions']也匹配返回的数组?!
所以问题是在PermissionResolver完成它应该做的事情之前,AuthGuard被触发了。
我没有设法工作(在PermissionResolver和AuthGuard之间共享)哪种观察PermissionResolver'直到完成'分别观察route.data.permissions以获取新值,以便AuthGuard只运行PermissionResolver完成后。
对此有何帮助或想法? 很难找到比angular2角色和权限的超简单例子更特别的东西。
谢谢=)