Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular RxJS管道在角分解器中不工作(但在ngOnInit中工作良好)_Angular_Routing_Rxjs_Resolver - Fatal编程技术网

Angular RxJS管道在角分解器中不工作(但在ngOnInit中工作良好)

Angular RxJS管道在角分解器中不工作(但在ngOnInit中工作良好),angular,routing,rxjs,resolver,Angular,Routing,Rxjs,Resolver,我们试图在角度解析器中添加一个RxJS管道:解析器进程开始但没有结束,因此我们无法在html组件中显示结果 另外,如果我们按照主组件的ngOnInit方法移动管道,则一切正常 我们做错了什么 myResolver.ts的示例(Resolve不会结束其进程): resolve():可观察的|承诺|任何{ 让T=mergeMap((用户:firebase.user)=>{return Observable.fromPromise(user.getIdToken())}); 让D=mergeMap((

我们试图在角度解析器中添加一个RxJS管道:解析器进程开始但没有结束,因此我们无法在html组件中显示结果

另外,如果我们按照主组件的ngOnInit方法移动管道,则一切正常

我们做错了什么

myResolver.ts的示例(Resolve不会结束其进程):

resolve():可观察的|承诺|任何{
让T=mergeMap((用户:firebase.user)=>{return Observable.fromPromise(user.getIdToken())});
让D=mergeMap((token:string)=>{返回this.http.get('https://myfakedomain.com/user?access_token=“+代币)});
设P=this.afAuth.authState//return Observable
.烟斗(
T、 D
)
返回P;
}
mainComponent.ts上的ngOnInit示例(它可以工作!):

ngOnInit(){
让T=mergeMap((用户:firebase.user)=>{return Observable.fromPromise(user.getIdToken())});
让D=mergeMap((token:string)=>{返回this.http.get('https://myfakedomain.com/user?access_token=“+代币)});
设P=this.afAuth.authState//return Observable
.烟斗(
T、 D
).subscribe(data=>this.myData=data);
}
找到了答案,应该适用

似乎必须在转换运算符旁边添加过滤运算符(例如,first、last、take…),以正确返回结果

问题中的行:
让p=this.afAuth.authState.pipe(T,D)

应该使用筛选运算符进行扩展,例如:
让P=this.afAuth.authState.pipe(T,D,first())

resolve(): Observable<any> | Promise<any> | any {

    let T = mergeMap((user: firebase.User) => {return Observable.fromPromise(user.getIdToken()) });

    let D = mergeMap((token: string) => { return this.http.get('https://myfakedomain.com/user?access_token=' + token) });

    let P = this.afAuth.authState // return Observable<User>

    .pipe(

    T, D

    )

    return P;

    }
ngOnInit() {

    let T = mergeMap((user: firebase.User) => { return Observable.fromPromise(user.getIdToken()) });

    let D = mergeMap((token: string) => {return this.http.get(' https://myfakedomain.com/user?access_token=' + token) });

    let P = this.afAuth.authState // return Observable<User>

    .pipe(

    T, D

    ).subscribe(data => this.myData = data);

    }