首页 > 解决方案 > 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 但是微调器变得不可见并且屏幕是白色的。

谢谢,如果您需要一些信息,请告诉我

标签: angularionic-framework

解决方案


推荐阅读