【问题标题】:Angular Route Metadata in GuardsGuards 中的 Angular 路由元数据
【发布时间】:2017-05-04 13:27:25
【问题描述】:

回到 angularjs(使用 ui-router)。您可以将元数据添加到您的路线并在 routechanges 中使用这些元数据。

在 Angular 中对此有 Guards,但我似乎无法弄清楚如何从路由定义中获取元数据。

举个更具体的例子,我希望能够将元数据添加到路由中,比如说所需的角色和/或权限,并让守卫完成繁重的工作。

路线定义:

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
}

【问题讨论】:

    标签: angular routes angular2-routing guard


    【解决方案1】:

    route.data[ 'permissions' ][ 0 ]应该是MyGuardcanActivate方法中的字符串viewMyGuard 应该实现 CanActivate。您的路由应如下所示:

    {
        path: '',
        component: MyComponent,
        data: {
            permissions: ["view"],
            roles: ["admin", "user"]
        },
        canActivate: [ MyGuard ]
    }
    

    当访问路由的根目录时,该路由应该可以工作。 A detailed explanation 可以在官方 Angular 网站上找到。

    【讨论】:

    • 我后来确实意识到我的后卫在错误的路线定义上。还是谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2019-11-19
    相关资源
    最近更新 更多