需要延迟路由canactivate方法调用,直到我的身份验证服务为用户ID返回用户角色为止。
我们的angular应用程序没有任何登录页面,它使用服务器登录中的用户ID。 当用户访问URL时,将在app.compoment.ts中调用身份验证服务,但在该服务返回任何结果之前,将调用canactivate方法,并且该用户当时没有用户角色。因此阻止了所有用户访问。
我尝试使用异步并等待https调用来获取用户数据,但这也没有用。 有人可以帮忙吗?
在这里,rxJS的pipe()很有用,而不是先订阅使用pipe()。
canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnapshot):可观察{ 返回this.loginService.isLoggedIn()。pipe( map(e => { 如果(e){ 返回true; }其他{
}
}),catchError((err) => {
this.router.navigate(['/login']);
return of(false);
})
);
}