从Observable数组Angular

时间:2016-11-22 04:44:45

标签: javascript angularjs arrays reactivex

我正在查询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来查找具有与num参数匹配的值rn的一个元素。我知道这是不对的,因为我收到了两个错误:

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

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

有没有办法可以进入T []数组来检查每个元素的属性,然后返回与给定谓词匹配的元素?现在我正在使用一个Ob的数组T,但我想返回一个只有一个 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;
}

1 个答案:

答案 0 :(得分:0)

我在这看错了。

  • 返回类型应为:

Observable<Array<T>>

  • 将“任意”添加到过滤器功能中:

.filter(x => Number.parseInt((<any>x).rn) === num)