RxJS - 翻译可观察到一个数组的一个新的可观察的阵列

问题描述:

我有一个oberservable,这是一个数组:RxJS - 翻译可观察到一个数组的一个新的可观察的阵列

items$: Observable<CarClassification[]>;

,我试图翻译/转换成一个新的可观察的这下拉框中的SelectItems的数组。

get SelectItems(): Observable<SelectItem[]> { ...

,我可以再设置为数据源的下拉框,并且如果项目$任何项目被修改,删除或新加入的一个SelectItems变化数组逢。我遇到的问题是,我需要用这种方式定义数十个这样的数组(大型对象的标准)。我所尝试过的每一件事,如果它有效的话,实在太慢了(订阅观察者并推向新的阵列),我正在寻找更加无缝的方式。

我是RxJS的新手,我尝试了几个不同的东西,但都没有效果。我已经搜索尽可能多的*,就像我想的那样。

CarClassification有两个属性,标识名称我想让的SelectItem标签

我知道我可以观察到的映射到一个数组:

items$.map((items) => { ...

但是,如何在正确遍历每个项目项目,并返回一个新的SelectItem每个都有一直躲过我。

如果您有可观察到的发射阵列可以随时与concatAll()再次解压,然后包装它像这个例子:

Observable.of([{...}, {...}, {...}]) 
    .concatAll() // unpack 
    // will emit each {...} as a single value 
    .toArray() // pack 

但你并不需要使用Rx的变换数组全部:

items$.map((items: CarClassification[]) => { 
    return items.map((item: CarClassification) => new SelectItem(...)); 
}); 

现在你有Observable<SelectItem[]>