2017-01-09 6 views
3

私はangularJS2のプロジェクトに取り組んでおり、observableで$ httpを使ってJSONを残りのAPIから解析しています。ここに私のコードがあります。AngularJS2レスポンスオブジェクトをクラスオブジェクトに割り当てる方法

サービス:

getSingleKey(id:any){ 

    var headers = new Headers(); 
    headers.append('content-Type','application/json'); 

    return this.http.get(
     'http://192.168.1.59/keyapp/api/getKeyspiration/'+id+'.json' 
     ).map(res => res.json());  

}

コンポーネント:

private dataKey: Object = {}; 

this.keyService.getSingleKey(this.id) 
     .subscribe( 

     data=> 
     { 
      console.log(data.data), 
      this.dataKey=data.data 
     }, 
     error=>console.log(error) 
    ); 

にconsole.log(this.dataKey)。でき

GET 
localhost/keyapp/api/getKeyspiration/15.json [HTTP/1.1 200 OK 398ms] 

//はconsole.logの応答(data.data)要するに

Object { k_id: 15, k_u_id: 5, k_type: 3, k_title: "vaibhav", k_text: "", k_data: "2024067187.png", k_thumb: "", k_added_date: "2016-11-24T06:10:23+0000" } 

// response for console.log(this.dataKey) 

Object { } 

、私は取得しています応答データが、どのよう:

と私は次のような応答を取得しています私はクラスオブジェクトに応答オブジェクトを割り当てます。私は自分のコードで何かを見つけられません。ご協力いただきありがとうございます。

+0

「クラスオブジェクト」何のことをいっているの? –

+3

もう一度行きます。あなたの 'console.log(this.dataKey);'は、subscribe()を呼び出してHTTPリクエストを送った直後に同期的に呼び出されます。はい、この時点で、あなたはまだ何も受け取っていません。あなたの 'console.log(data.data)'は、非同期コールバック関数内にあるはずです。すべてがうまくいきます。だから問題はどこにあるの? –

+0

ありがとう、私は私のコンセプトに問題があることを理解しました。 –

答えて

1

@JBNizetがコメントセクションの問題を指摘したので、あなたは非同期に期待している値を記録しています。

getSingleKey()メソッドは非同期メソッドです。応答が到着するタイミング(ネットワーク速度など)を推測できません。

あなたは非同期機能のコールバック内で、応答で行う予定何でもしなければならない

private dataKey: Object = {}; 

this.keyService.getSingleKey(this.id) 
     .subscribe( 

     data=> 
     { 
      console.log(data.data), 
      this.dataKey=data.data; 
      console.log(this.dataKey); //will be defined since it is in the async functions 
      //callback scope, so do whatever you want to do with this.dataKey here 
     }, 
     error=>console.log(error) 
    ); 
console.log(this.dataKey); //will be undefined since it is out of the async functions callback scope 
+0

ありがとう、それは私の仕事です。あなたの答えはそれのための概念的な感謝でした。 –

関連する問題