angular - CanLoad 返回 true 但什么也不做
问题描述
我有一个 canLoad 的问题,它返回 true 但什么也不做。我的项目是 angular v11。
我的代码:
canLoad(): Observable<boolean> {
console.log('routing init login guard');
return this.auth.isAuthenticated$.pipe(take(1),
map((isAuth: boolean) => {
if (isAuth) {
console.log('*************GUARD: Authenticated !!!!!!******************');
this.showLoadingIndictator().then(() => {
this.auth.idTokenClaims$.subscribe((userInfos) => {
this.shopperCrud.getShopperInfos(userInfos).subscribe({
next: () => {
return true;
},
error: (error) => {
if (error.status === 404) {
this.router.navigate(['/account']).finally(() => this.loadingController.dismiss());
return false;
}
}
})
})
})
} else {
this.showLoadingIndictator().then(() => {
this.auth
.buildAuthorizeUrl()
.pipe(mergeMap((url) => Browser.open({ url, windowName: '_self' })))
.subscribe(() => {
this.loadingController.dismiss();
});
});
return isAuth;
}
})
)
}
用我的路由:
{
path: 'main',
loadChildren: () => import('./main/main.module').then(m => m.MainPageModule),
canLoad: [LoginGuard],
},
这在我收到错误时有效,因此我被重定向到 /account。但是当它是真的时,我必须去 /main 但是微调器变得不可见并且屏幕是白色的。
谢谢,如果您需要一些信息,请告诉我
解决方案
推荐阅读
- mysql - 如何查询数据库中的所有表
- typo3 - TYPO3 Extbase TCA MM 关系过滤器结果由站点定义的常量“newRecordStoragePid”
- java - 从 sqlite 获取的数据未显示在 recyclerview 中
- ios - 计算可见 CGRect 以裁剪 UIImageView
- c# - Onesignal c# web_buttons
- postgresql - 如何创建这个数据库?
- rabbitmq - RabbitMQ crashes when entering UI
- http - Cannot make a successful curl put call in PHP
- java - JShell 的限制是什么?
- ssl - AWS 上的 Kubernetes:使用 nginx-ingress + cert-manager 保留客户端 IP