回到angularjs(使用ui-router)。您可以向路由添加元数据,并在路由更改中使用这些元数据。
在角度方面有防守,但我似乎无法弄清楚如何从路线定义中获取元数据。
为了给你一个更具体的例子,我希望能够为一条路线添加元数据,让我们说一下所需的角色和/或权限,并让一名警卫完成繁重的工作。
路线定义:
RouterModule.forChild([
{
path: '',
component: MyComponent,
data: {
permissions: ["view"],
roles: ["admin", "user"]
}
},
...
]);
然后在我的卫兵中:
constructor(private myService: MyService, private router: Router) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
//How to get a hold of the data defined for the current route ?
console.log(route.data); //returns an empty object
}
答案 0 :(得分:2)
route.data[ 'permissions' ][ 0 ]
应该是view
canActivate
方法中的字符串MyGuard
。 MyGuard
应该实施CanActivate
。您的路由应如下所示:
{
path: '',
component: MyComponent,
data: {
permissions: ["view"],
roles: ["admin", "user"]
},
canActivate: [ MyGuard ]
}
当访问路由的根目录时,此路由应该有效。 A detailed explanation可以在官方角度网站上找到。