Rxjs过滤器运算符不使用Angular2 Observable

时间:2016-07-27 20:11:00

标签: http filter angular rxjs observable

在此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属性。虽然不确定!。

1 个答案:

答案 0 :(得分:5)

您的observable是一个数组项目。它不是该数组中项目的可观察数据。过滤器函数中的xx=> 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
  }