【发布时间】:2020-02-14 02:00:27
【问题描述】:
我有角度通用应用程序,其中部分路由受 CanActivate 保护,其中 canActivate 方法使用服务来保护路由。但是使用 initialNavigation: "enabled" 配置我的警卫不起作用。 我想,这个问题是因为:
初始导航在创建根组件之前开始。 引导程序被阻止,直到初始导航完成。 (来自角度文档)
问题是:如何在 canActivate 守卫中使用启用了 initialNavigation 的服务?
【问题讨论】:
-
你说的“守卫不起作用”是什么意思?我确实在我的一个项目中使用了将
initialNavigation设置为enabled的警卫呼叫服务,它确实有效 -
CanActivate Method in my guard 看起来像:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { return this._statusService .userStatusObservable .pipe( map(status => { if(status.is_authenticated && status.is_customer) { return true; } else if(!status.is_authenticated) { setTimeout(() => this._router.navigate([])); return false; } } }) ); }并且可能因为 引导程序被阻止,直到初始导航完成。 -
我的错误,我使用
if( isPlatformBrowser(this._platformId) ) return null之类的东西阻止了此服务的请求,谢谢大家的回答
标签: angular angular-router angular-universal