2016-04-25 21 views
2

サービスによって提供されるAngular 2の観測値からアイテムを取得しようとしています。これまでのところ、私はobservableを購読してコンソールの内容を見ることができますが、そのIDでアイテムをフィルタリングすることはできません。私は以下を試しましたが、空白の画面が表示されます。任意のヒントをいただきました。Observable Observable from Observable from Angular 2 in Typescript

service.ts:

getJobs() { 
    this.observableData = this._http.get('json_path/') 
     .map(res => res.json()) 
     .do(val => { 
     this.result = val; 
     this.observableData = null; 
     }) 
     .share(); 
    return this.observableData; 
} 

component.ts:あなたはjobs.filter()の結果を購読することができません

let id = this._routeParams.get('id'); 
this._jobService.getJobs().map(jobs => { 
    return jobs.filter(item => item.id === id)[0]; 
}).subscribe(job => this.job = job)); 

let id = this._routeParams.get('id'); 
this._jobService.getJobs().map(jobs => jobs.filter(item => item.id === id).subscribe(job => this.job = job)[0]); 
+0

これは私ですか? ntentional。あなたは 'getItems()'メソッドを投稿して、次に 'getJobs()'メソッドを使いました。 –

+0

ああ、それは間違いだった。どちらもgetItems()またはgetJobs()のいずれかでなければなりません。ありがとう – skyscript

答えて

4

私はあなたのような何かをしたいと思います

+0

それは私のために働かないようでした - 変数は未定義または空として返されました。コードはコンソールでエラーフリーだったので、構文は正しいように見えますが、私はそれを微調整します。ありがとう。 – skyscript

+1

私は[。]インデックスを '.subscribe()'の代わりに 'jobs.filter()'の結果に動かすことで動作させました。 'this._jobService.getJobs()。map(jobs => { return jobs.filter(item => item.id === id)[0]; })。subscribe(ジョブ=> this.job =ジョブ); ' – skyscript