我正在从我的 Angular 服务上的 Observable 中检索项目列表。在每个项目中,我都有一个包含主题列表的数组。对于每个主题,我都需要再次调用以获取其详细信息(例如名称、描述等)。
数据结构:
- post1
- subjects: ['books', 'cars', 'movies']
有了这个清单,我就有了id
来自每个主题,但我需要返回一个包含属于该帖子的所有主题(及其详细信息)的可观察值。
应用服务.ts
getPost(id: string): Observable<Post> {
return Observable.of({id: id, subjects: ['books', 'cars', 'movies']});
}
getSubjects(id: string): Observable<Subject[]> {
return this.getPost(id).pipe(
map((post: Post) => post.subjects),
mergeMap((subjects: string[]) => subjects.map((id: string) => this.getSubject(id))),
switchMap(list => list),
);
}
getSubject(id: string): Observable<Subject> {
switch (id) {
case 'books':
return Observable.of({id: 'books', name: 'Books'});
case 'cars':
return Observable.of({id: 'cars', name: 'Cars'});
case 'movies':
return Observable.of({id: 'movies', name: 'Movies'});
}
}
它返回一个对象流,但我想返回一个包含所有主题的数组。
[DEMO https://stackblitz.com/edit/angular-mgdvqw?file=app%2Fapp.service.ts]