Angular RxJS管道在角分解器中不工作(但在ngOnInit中工作良好)
我们试图在角度解析器中添加一个RxJS管道:解析器进程开始但没有结束,因此我们无法在html组件中显示结果 另外,如果我们按照主组件的ngOnInit方法移动管道,则一切正常 我们做错了什么 myResolver.ts的示例(Resolve不会结束其进程):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((
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);
}