如何将Observable映射到另一种Observable?

时间:2018-04-13 20:08:52

标签: angular rxjs5

我有这个

  public getRouteData(): BehaviorSubject<string[]> {
     return this.routeData;
  }

我想把它映射到一个{name: r}的观察点,其中rstring[]

中的一个项目
public gridData: BehaviorSubject<any[]> = new BehaviorSubject([]);

我想将string[]和map映射到对象{name: r}的数组,其中r是数组项,这样我就可以将对象数组绑定到网格中。

无论如何不能正确排序或语法。

尝试getRouteData().map(r => ({name: r})).subscribe(r => this.gridData.next(r));,但这不正确,因为我最终使用{name:string[]}代替[{name:string}]

有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:7)

如果我理解正确,我认为你正在寻找:

getRouteData() // => Observable<string[]>
    .map(r => r.map(v => ({name: v}))) // => Observable<{ name: string }[]>
    .subscribe(r => this.gridData.next(r));

外部map(...)迭代从您的observable发出的每个值。因此,r的类型为string[]

内部map(...)正在迭代r数组中的每个元素,并将string转换为{ name: string }类型。