http - Rxjs 过滤器运算符不适用于 Angular2 Observable

标签 http filter angular rxjs observable

在此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/

相关文章:

python - 如何在 SSH 中发送 HTTP 请求?

html - 将背景过滤器应用于 svg 路径元素

javascript - 按数组值的 Angular 自定义过滤器

android - 如何阻止 eclipse 自动为 android logcat 创建过滤器?

security - 为什么/如何域 URL 显示客户端的本地主机地址?

http - 在 REST API 中使用 PUT 进行更新时,我是否应该允许发送完整的结构?

c++ - HTTP/S 代理起点

javascript - 将对象推送到 firebase 的智能方法

AngularMaterialDemo/node_modules/rxjs/Rx "' has no exported member ' 可订阅'

angular - Angular/CLI 6.x 中的自定义原理图构建没有错误,但我无法使用它来生成文件