簡體   English   中英

基於Angular 5中的HTTP響應,有條件地延遲加載模塊

[英]Lazy load modules conditionally on the basis of HTTP response in Angular 5

我有兩個角色admin和user。 如果userId屬於admin,則必須加載管理頁面;如果userId屬於user,則必須加載用戶頁面。

該URL類似於http://example.net/[user_id]

我是否可以根據收到的http響應延遲加載Angular路由中的模塊? 我點擊了API並傳遞了用戶ID並獲得了用戶角色,然后必須加載延遲加載其模塊。

那不可能 但是,您可以在: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}`);
     }
  }
}

您可以使用以下方法解決您的問題:PreloadingStrategy。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM