Rxjs 过滤器运算符不适用于 Angular2 Observable
Posted
技术标签:
【中文标题】Rxjs 过滤器运算符不适用于 Angular2 Observable【英文标题】:Rxjs filter operator not working with Angular2 Observable 【发布时间】:2016-12-02 00:24:25 【问题描述】:在这个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)?在我看来,可观察对象在映射运算符之后处于对象状态,并且没有类型属性。不过不确定!
【问题讨论】:
【参考方案1】:你的 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
【讨论】:
以上是关于Rxjs 过滤器运算符不适用于 Angular2 Observable的主要内容,如果未能解决你的问题,请参考以下文章
rxjs 与 systemjs 捆绑用于 Angular 2.0 应用程序