在此plunker 我正在尝试在 member.service.ts 类中的 angular2 observable (Rxjs) 上使用过滤器运算符。 observable 是通过 http 请求获取的,我按如下方式处理:
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 运算符之后处于对象状态,并且没有类型属性。虽然不确定!
最佳答案
您的可观察对象是作为数组的单个项目。它不是该数组中项目的可观察对象。 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
}
关于http - Rxjs 过滤器运算符不适用于 Angular2 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38622325/