订阅当时发出一个项目而不是Rxjs

时间:2017-12-03 09:43:48

标签: angular rxjs observable

我目前正努力在Angular 4应用程序中找出Rxjs中的行为。

我的代码是:

this.server.get("incidents") //http get resource
.flatMap((res) => res.value) //the incident array is in a property called value of the json returned
.map((incident) => new Incident(incident)) // conversion from json to typed class
.subscribe(i => {this.ng2TableData.push(i);}) //subscribe

在最后一行,我希望subscribe方法能够立刻为我提供整个列表,相反,似乎可以忽略的是当时返回一个Incident并且订阅函数被调用了N次,因此强迫我使用push方法,而不是一次性构建ng2TableData

我如何订阅整个列表,而不是当时的一个项目?

1 个答案:

答案 0 :(得分:1)

flatMap会将您的数组展平为可观察的值流。您只想使用map。您可以再次使用map,将数组中的每个对象作为类的实例,如下所示:

this.server.get("incidents")
  .map(res => res.value.map(incident => new Incident(incident)))
  .subscribe(data => console.log(data)) // data is an array!

现在你将数组放入订阅中。