Angular2在路由器数据中使用函数?
我认为这个伪代码的问题应该很清楚。找不到任何解决方案。如何解决这个问题 当前工作路线:Angular2在路由器数据中使用函数?,angular,angular-ui-router,Angular,Angular Ui Router,我认为这个伪代码的问题应该很清楚。找不到任何解决方案。如何解决这个问题 当前工作路线: { path: ':xyzType', component: SuperSpecialComponent, canActivate: [AuthGuard], data: { /* ENUM 1 for XOR */ authPermissionType: authPermissionType["XOR"], permissions: [
{
path: ':xyzType',
component: SuperSpecialComponent,
canActivate: [AuthGuard],
data: {
/* ENUM 1 for XOR */
authPermissionType: authPermissionType["XOR"],
permissions: [
'add:xyzType1',
'edit:xyzType1',
'add:xyzType2',
'edit:xyzType2'
]
},
}
我希望从路由参数“xzyType”独立设置权限。应该是这样的:
{
path: ':xyzType',
component: SuperSpecialComponent,
canActivate: [AuthGuard],
data: {
/* ENUM 1 for XOR */
authPermissionType: authPermissionType["XOR"],
permissions: function(this_route.param['xyzType']) {
if(this_route.param['xyzType'] == 'type1' {
return [
'add:xyzType1',
'edit:xyzType1'
]
}
else if(this_route.param['xyzType'] == 'type2' {
return [
'add:xyzType2',
'edit:xyzType2'
]
}
}
},
}
因此,我尝试为此构建一个解析器,但最终出现了另一个问题:
{
path: ':xyzType',
component: SuperSpecialComponent,
canActivate: [AuthGuard],
data: {
/* ENUM 1 for XOR */
authPermissionType: authPermissionType["XOR"],
permissions: {
"type1": [
"add:xyzType1",
"edit:xyzType1"
],
"type2": [
"add:xyzType2",
"edit:xyzType2"
]
}
},
resolve: {
permissions: PermissionsResolver
}
}
在解析器中,我检查路由参数并使用以下代码返回所需的权限:
switch(route.params[xyzType]) {
case 'type1':
return route.data['permissions']['type1'];
case 'type2':
return route.data['permissions']['type2'];
}
问题是AuthGuard已检查权限,即使解决尚未完成。有没有办法让AuthGuard等待权限更改?我想你需要的是解析程序是的,你肯定想在这里使用解析。与角度解析相比,它们的详细程度实在太糟糕了,尤其是在UI路由器中。但是在整个框架中,同样的事情也可以说,你可以在
AuthGuard
和Resolver
之间共享一个服务,当解析完成时,它会通知你。请不要将后续问题作为答案发布。请改为编辑你的问题并在那里添加信息。好的,我已经试了几个小时了。。。我他妈的怎么能得到一个服务,在解析器完成时通知一个可观察的服务?!