在禁止页面上导航时,如何防止路由并显示模式?

时间:2019-07-23 12:40:47

标签: angular angular-router-guards

在我的应用程序中,您可以在应用程序各处找到许多routerLink。根据用户的角色,某些用户可能无法访问其中的一些。我的auth-guard-service处理这种情况。

但是在这种情况下会发生的情况是,用户被导航到禁止页面,然后又回到旧页面。

我想要的不是完全不导航,而是在当前站点上显示模式或祝酒消息(无论如何)。

这怎么办? 这是我的一些代码:

export class AuthGuardService implements CanActivate {
  constructor(public auth: AuthServiceProvider, public router: Router, private TokenHelper: TokenHelperService) {}

  canActivate(Route: ActivatedRouteSnapshot): Observable<boolean> {
    const expectedRoles = Route.data['authenticate'] as string[];

// ...... and so on (return true or false)


1 个答案:

答案 0 :(得分:4)

如果禁用页面用户试图激活的页面位于延迟加载的模块中,则可以通过放置canLoad保护器来阻止导航。

{
  path: 'admin',
  loadChildren: () => import('./admin/admin.module').then(mod => mod.AdminModule),
  canLoad: [AuthGuard]
},

=====

    canLoad(route: Route): boolean {

      return this.checkValidation();
    }

   checkValidation() {
   if (authService.checkRights()) { return true}
   else {
   this.toastService.showToast('Forbiden');
   return false
   }
}

}