【发布时间】:2020-02-27 15:03:59
【问题描述】:
我正在尝试返回一个由用户和结果组成的 UserDetail 对象,用户是通过 Account 的 accessToken 检索的(全部通过单独的异步调用检索)。目前,当我导航到 detailcomponent 时,我一直在弄清楚如何返回这个 UserDetail 对象(我知道由于调用是异步的,因此无法逐字返回该对象,但我需要在我的组件)。
下面的代码给了我以下错误:
类型 'Observable' 不可分配给类型 “可观察”
我尝试使用管道和映射,因为我读过这是我应该如何将异步调用“返回”到调用函数的组件。然后该组件应该处理订阅,但如果不产生错误,我什至无法做到这一点。
@Injectable({
providedIn: 'root'
})
export class UserResolver implements Resolve<UserDetails> {
constructor(
private as: AccountService,
private rs: ResultService,
private auth: AuthService
) {}
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<UserDetails> {
return this.as.getAccount(route.params['id']).pipe(
map((acc: Account) => {
this.as.getUserDetails(acc.access_token).pipe(
map((user: User) => {
if (user != null) {
this.rs.getResults(this.auth.token).pipe(
map((res: Result[]) => {
const ud: UserDetails = {
user,
results: res.filter(x => x.userId === acc.uid)
};
return of(ud);
})
);
}
})
);
})
);
【问题讨论】:
标签: angular asynchronous rxjs