我有一个令人难以置信的,这是一个阵列:
items$: Observable<CarClassification[]>;
我正在尝试将其转换/转换为一个新的Observable,其中包含一个 SelectItems 数组,用于下拉框。
get SelectItems(): Observable<SelectItem[]> { ...
然后我可以将其设置为下拉框的数据源,并且,如果 items $ 中的任何项目被修改,删除或添加了新项目, SelectItems的数组改变了。我遇到的问题是我有几十个需要以这种方式定义的数组(更大对象的标准)。我尝试过的所有东西,如果有效的话,都太慢了(订阅了observable并推向了一个新阵列),我正在寻找一种更加无缝的方式。
我是RxJS的新手,我尝试了一些不同的东西,但似乎都没有用。我搜索的StackOverflow和我想象的一样多。
CarClassification有两个属性, Id 和名称我想要使值和标签 的SelectItem
我知道我可以将observable映射到数组:
items$.map((items) => { ...
但是如何正确迭代项目中的每个项目,并为每个项目返回一个新的 SelectItem 一直在逃避我。
答案 0 :(得分:3)
如果你有一个发射阵列的Observable,你总是可以用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[]>
。