我有两个角色admin和user。如果userId属于admin和用户页面,如果userId属于用户,我必须加载管理页面。
网址类似于http://example.net/[user_id]
。
我可以根据我得到的http响应在Angular路由中延迟加载模块吗?我点击API并传递用户ID并获得用户角色,然后我必须加载延迟加载其模块。
答案 0 :(得分:1)
那是不可能的。但是,您可以在:user_id
路线的警卫处进行重定向:
export class UserRoleResolve implements CanActivate {
constructor(private router: Router) {}
public async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {
const userId: string = route.params.user_id;
const role: string = await this.getRoleFromUser(userId);
if (role === 'admin') {
this.router.navigateByUrl(`/admin/${userId}`);
} else if (role === 'user') {
this.router.navigateByUrl(`/user/${userId}`);
}
}
}
答案 1 :(得分:0)
你可以用这个来解决你的问题:PreloadingStrategy。