0

所以,我使用ngrx store 来获取数据。一旦我从商店中选择了我想要的属性,然后我订阅了它以获得可观察的流。我的数据包含对象数组。所以在这个对象数组中,我必须对每个对象的一些属性做一些修改。

因此,为此我使用 rxjs 库的“from()”运算符将我的对象数组转换为顺序可观察对象,然后将其分配给新的可观察对象。使用这个新的 Observable 对象,我应用 map 函数进行修改,最后再次返回一个新的 Observable 对象。直到这一步一切正常。问题出现了,当我订阅这个新的修改后的可观察对象时,它按顺序发出值,而不是整个对象数组。但我想要修改后的对象数组。

this.statusObj = this.store.select(s => s.userStore.data);
this.statusObj.subscribe(rslt => {
    this.usrArr = rslt;
})

this.newstatusObj = from(this.usrArr);
this.newstatusObj2 = this.newstatusObj
    .pipe(map(() => {
        //////some modifications
        return
    }))

this.newstatusObj2.subscribe(val => {
    console.log(val);  //this line is emitting sequential values..but i want array of objects
})
4

1 回答 1

1

您不需要使用.from(),它将根据您的数组将您的数据转换为多个排放。由于您的商店已经为您提供了一个包含要修改的数据的 observable,因此只需使用它.map()来修改它们,如下所示:

this.store.select(s => s.userStore.data)
    .pipe(map((rslt)=>{
        //DO YOUR MODIFICATION HERE.
    }))
    .subscribe(val=>{
        console.log(val) // now your data is in array of objects
    })
于 2019-08-01T08:13:29.523 回答