我在一个组件中使用带有路由功能的resolve,但在resolve中,一个HTTP调用依赖于其他Promise调用。
resolve(){
return this.storage.getUser().then( user => {
this.getVendorDetails(user.login);
});
}
getVendorDetails(loginId) {
return this.http.get('http://localhost:8080/user/getVendor/' + loginId);
}
当我尝试从ActivatedRoute
获取数据时在组件中
ngOnInit() {
this.activatedRoute.data.subscribe( data => {
console.log(data);
});
}
我得到undefined
。也许我在resolve函数中缺少某些内容。
如何使用getVendorDetails()
将ngOnInit()
回复到ActivatedRoute
。
答案 0 :(得分:3)
要么使一个成为旁观者,要么使另一个成为诺言,并且始终返回:
resolve() {
return this.storage.getUser().then(user => this.getVendorDetails(user.login).toPromise());
}
或
resolve() {
return from(this.storage.getUser()).pipe(
switchMap((user) => this.getVendorDetails(user.login))
);
}