2016-11-22 46 views
1

私はAPIに問い合わせて、それが返す配列から特定の要素を取得しようとしています。観測可能な配列から要素を選択する角度

私はAPIにクエリを実行し、JSON応答を返します。私は、numパラメータに一致する値Rnを持っている一つの要素を見つけるために、フィルタを呼び出したいT.

に応じて、各オブジェクトをマップする関数に.MAP呼び出しによって
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$; 
} 

を応答を送信します。私は戻って2つのエラーを得ているように私は、それは正しくありません知っている:

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

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

は私がTに達することができる方法は、配列が各要素のプロパティを確認し、一致した要素を返すために[]あります与えられた述語?それは私がTさんの観察可能な配列で働いているが、私は参考のためだけ T.

の観測を返すようにしたい、他の二つの機能現状では:

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; 
} 

答えて

0

私は間違って何かを見ますここに。

  • 戻り値の型は次のようになります。フィルタ機能へ

Observable<Array<T>>

  • 追加 '任意の':

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

関連する問題