我有一个问题困扰着我的身份验证卫士,我试图在其中调用两个异步http请求,然后在成功完成后,我想做第三个请求以获得最后一个信息,然后再让用户访问该页面。 / p>
到目前为止,这是我的代码:
Elements xyz
问题是我遇到了错误:
src / app / guard / initialization.guard.ts(32,17)中的错误:错误TS2345: 类型'([[userInfo,individuPro]:[any,Individu])=> false的参数 | Observable>'不能分配给的参数 输入'(值:[any,Individu],索引:数字)=> ObservableInput>”。输入'false | Observable>'不可分配给类型 “ ObservableInput>”。 不能将类型“ false”分配给类型“ ObservableInput>”。
但是我不知道出了什么问题。
答案 0 :(得分:0)
您定义了canActivate() => boolean
,但是如果我正确理解您的代码,您将返回forkJoin()
,即Observable<boolean>
。
canActivate
方法可以返回boolean
或Observable<boolean>
,因此boolean | Observable<boolean>
返回类型,请参见https://angular.io/api/router/CanActivate。
您可能想制作canActivate(...): boolean | Observable<boolean>
或只使用canActivate(...): Observable<boolean>
,然后返回return of(true);
。
答案 1 :(得分:0)
好吧,我设法在第二个可观察的流上使用运算符flatMap找到了一个解决方案:
return this.recruteurService.rechercherEtablissementParIdRce(individuPro.etablissements[0]).flatMap(
flatMap-它基本上合并了可观察序列 序列变成一个可观察的序列。
感谢此文档:Map vs FlatMap