代码之家  ›  专栏  ›  技术社区  ›  Imad El Hitti

角度验证保护嵌套异步调用

  •  0
  • Imad El Hitti  · 技术社区  · 6 年前

    以下是我目前为止的代码:

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    
        if (this.recruteurService.getUserInfo() &&
          this.recruteurService.getIndividuPro() &&
          this.recruteurService.getEtablissement()) {
          return true;
        }
    
        return forkJoin(
          this.recruteurService.rechercherUserInfo(),
          this.recruteurService.rechercherIndividuProfessionnel())
          .mergeMap(([userInfo, individuPro]) => {
            if (userInfo && individuPro) {
              this.recruteurService.setUserInfo(userInfo);
              this.recruteurService.setIndividuPro(individuPro);
            } else {
              return false;
            }
    
            return this.recruteurService.rechercherEtablissementParIdRce(individuPro.etablissements[0]).map(
              (etablissement: Etablissement) => {
                if (etablissement) {
                  this.recruteurService.setEtablissement(etablissement);
                  return of(true);
                }
                return of(false);
              });
          });
      }
    

    src/app/guard错误/初始化.guard.ts(32,17):错误TS2345: '([userInfo,individuPro]:[any,Individu])=>false类型的参数 |Observable>'不可分配给的参数 可观察输入>'。键入'false'| Observable>'不可分配给类型 “ObservableInput>”。

    但我不知道是什么问题。

    2 回复  |  直到 6 年前
        1
  •  0
  •   martin    6 年前

    你定义的 canActivate() => boolean 但你回来了 forkJoin() 是什么 Observable<boolean> 如果我理解正确的话。

    这个 canActivate boolean 可观察<布尔值> 因此 boolean | Observable<boolean> https://angular.io/api/router/CanActivate .

    你可能想 canActivate(...): boolean | Observable<boolean> canActivate(...): Observable<boolean> 然后回来 return of(true); .

        2
  •  0
  •   Imad El Hitti    6 年前

    return this.recruteurService.rechercherEtablissementParIdRce(individuPro.etablissements[0]).flatMap(

    平面图-它基本上合并了可观察的序列

    感谢这位医生: Map vs FlatMap