在Angular 5中基于HTTP响应有条件地延迟加载模块

时间:2018-02-14 07:42:15

标签: javascript angular angular-ui-router

我有两个角色admin和user。如果userId属于admin和用户页面,如果userId属于用户,我必须加载管理页面。

网址类似于http://example.net/[user_id]

我可以根据我得到的http响应在Angular路由中延迟加载模块吗?我点击API并传递用户ID并获得用户角色,然后我必须加载延迟加载其模块。

2 个答案:

答案 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。