【问题标题】:Select element from Observable array Angular从 Observable 数组 Angular 中选择元素
【发布时间】:2016-11-22 04:44:44
【问题描述】:

我正在查询 API 并尝试从它返回的数组中获取特定元素。

我查询 API 并返回 JSON 响应。我通过 .map 调用将响应发送到将响应中的每个对象映射到 T 的函数。

getOne(num: number): Observable<T> {
      let t$ = this.http
      .get(`${this.API_URL}?${this.getParams()}`)
        .map(mapToTypeT)
        .filter(x => Number.parseInt(x.rn) === num)

      return t$;
}

我想调用 filter 来查找 rn 值与 num 参数匹配的一个元素。我知道这是不对的,因为我收到了两个错误:

Property 'rn' does not exist on type 'T[]'

Type 'T[]' is not assignable to type 'T'

有没有办法可以进入 T[ ] 数组来检查每个元素的属性,然后返回与给定谓词匹配的元素?就目前而言,我正在使用 T 的 Observable 数组,但我想返回一个只有 one T 的 Observable。

其他两个函数供参考:

function mapToTypeT(response:Response): T[]{
  return response.json().map(t => toT(t))
  }


  function toT(r:any): T{
  let t = <T>({
    staId:    r.staId,
    stpId:    r.stpId,
    staNm:    r.staNm,
    stpDe:    r.stpDe,
    rn:       r.rn,
  });
  return t;
}

【问题讨论】:

    标签: javascript angularjs arrays reactivex


    【解决方案1】:

    我发现这里有问题。

    • 返回类型应该是:

    Observable&lt;Array&lt;T&gt;&gt;
    • 在过滤函数中添加“任意”:

    .filter(x =&gt; Number.parseInt((&lt;any&gt;x).rn) === num)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多