我目前正努力在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
。
我如何订阅整个列表,而不是当时的一个项目?
答案 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!
现在你将数组放入订阅中。