Rxjs 过滤器运算符不适用于 Angular2 Observable
Rxjs filter operator not working with Angular2 Observable
在这个plunker
我正在尝试在 class 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
}
我的问题是:为什么当我取消注释带有过滤器的行时列表不会呈现(请查看内存中-data.service.ts)?在我看来,observable 在 map 运算符之后处于对象状态,并且没有类型 属性。虽然不确定!
您的 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
}
在这个plunker 我正在尝试在 class 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
}
我的问题是:为什么当我取消注释带有过滤器的行时列表不会呈现(请查看内存中-data.service.ts)?在我看来,observable 在 map 运算符之后处于对象状态,并且没有类型 属性。虽然不确定!
您的 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
}