首页 > 解决方案 > 从 HTTP Observable 响应中获取单个属性

问题描述

对于您的 RxJS 专业人士来说,这应该是一件容易的事。

我正在使用 Angular 5。

我想做这样的事情:

  this.allFilters = this.http.get(path).pipe(
    map((response) => response.forms.sim_filter.schema.properties))

响应是沼泽标准对象,而不是数组,所以我不确定地图是否正确。

所以基本上,我只对深度嵌套的属性感兴趣,并且只想在订阅时访问它this.allFilters

请问我该怎么做?

标签: angularrxjs

解决方案


这与 Rx 无关,这更像是一个 JS 问题。

allFilters是您的代码中的一个 Observable,它是您通过 HTTP 调用分配的。

当您订阅它时,您将收到在您的管道中返回的内容map,在您的情况下:

this.allFilters = this.http.get(path).pipe(
  map((response) => response.forms.sim_filter.schema.properties))

this.allFilters.subscribe (res => { /* res = originalResponse.forms.sim_filter.schema.properties */});

您可以使用它map,因为这与 JS 对象/数组无关,而是与 RxJS 本身相关(这是一个 Rx 运算符)。这本来可以称为RxJSmap,这只是一个通缉的巧合。

除此之外,我不明白你的问题是什么。什么不工作?你在期待什么?你能再解释一下吗?


推荐阅读