gpt4 book ai didi

angular - 在 canActivate Guard 中访问 ActivatedRoute 的组件

转载 作者:行者123 更新时间:2023-12-01 12:16:33 26 4
gpt4 key购买 nike

据我所知canActivate的调用签名看起来像这样:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {

}

我有一个服务需要一个组件的名称并返回访问该组件所需的用户 Angular 色,以便我可以 checkin canActivate我的守卫功能,活跃用户是否有对应的 Angular 色。
我的问题是,我不知道如何访问该组件。经过一番谷歌搜索后,我找到了这样的解决方案:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const nameOfComponent = route.routeConfig.component.name;
return doSomeRoleCheck(nameOfComponent);
}

但就我而言,我只是收到一个错误:“无法读取未定义的属性‘名称’”。如何访问事件路由的组件,尤其是作为字符串的名称?

编辑

我发现,我确实在父路线上检查了这个守卫。当我在子路由中检查它时,它可以工作。如何从父组件访问子组件 ActivatedRouteSnapshot

最佳答案

像这样的事情可能适用于您的情况:

export abstract class RoleCheck {
myRoles: string[];
}

@Component({ ... })
export class YourComponent extends RoleCheck {
public myRoles = ['User', 'Admin'];
}

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (!route.routeConfig.component instanceof RoleCheck) {
//Throw
}
return doSomeRoleCheck(route.routeConfig.component.myRoles)
}

关于angular - 在 canActivate Guard 中访问 ActivatedRoute 的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47679726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com