RxJS - 翻译可观察到一个数组的一个新的可观察的阵列
问题描述:
我有一个oberservable,这是一个数组:RxJS - 翻译可观察到一个数组的一个新的可观察的阵列
items$: Observable<CarClassification[]>;
,我试图翻译/转换成一个新的可观察的这下拉框中的SelectItems的数组。
get SelectItems(): Observable<SelectItem[]> { ...
,我可以再设置为数据源的下拉框,并且如果项目$任何项目被修改,删除或新加入的一个SelectItems变化数组逢。我遇到的问题是,我需要用这种方式定义数十个这样的数组(大型对象的标准)。我所尝试过的每一件事,如果它有效的话,实在太慢了(订阅观察者并推向新的阵列),我正在寻找更加无缝的方式。
我是RxJS的新手,我尝试了几个不同的东西,但都没有效果。我已经搜索尽可能多的StackOverflow,就像我想的那样。
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[]>
。