在此plunker 我试图在类member.service.ts内的angular2 observable(Rxjs)上使用过滤器运算符。使用http请求获取observable,我按如下方式处理:
getMembers (): Observable<Member[]> {
var one = this.http.get(this.memberUrl)
.map( this.extractData )
//.filter(x => x.type==='member')
return one
}
我的问题是:当我使用过滤器取消注释行时,为什么列表不会呈现(请查看in-memory-data.service.ts)?在我看来,observable在map运算符之后处于对象状态,并且没有type属性。虽然不确定!。
答案 0 :(得分:5)
您的observable是一个数组项目。它不是该数组中项目的可观察数据。过滤器函数中的x
:x=> x.type ==="member"
是一个数组,因此x.type
不存在。为了实现你想要的,你需要遍历那个数组:
getMembers (): Observable<Member[]> {
var one = this.http.get(this.memberUrl)
.map( this.extractData )
.map(memberArray => {
return memberArray.filter(x=> x.type === "member")
})
return one
}