2016-07-06 8 views
2
私は内部の私の変数の値をログに記録するよ

私は値を持っているが、それの外にそれをやったときに私は???未定義の取得購読:観測値を購読

私は私の自宅の変数を初期化したい
this._postService.getConf("app/conf/conf.json") 
    .subscribe(res =>{ 
     this.home = JSON.stringify(res); 
     console.log("value :" + this.home); 

一定の値と私はngOnInitでそれをやっているが、私は外にそれを取得しようとしているときには、値は不定ます:

これは私の関数である:どのように観測作業をだ

答えて

3

。サーバーからの応答が到着すると、subscribe(...)に渡されたコールバックがobservableによって呼び出されます。

subscribe()の外のconsole.log()は、サーバーへの呼び出しが行われる前に実行されます。

+0

あなたの答えはありがとう、私は変数の値にどのように影響しますか?私はngOnInitでそれをやっているthinikgだったそれを修正する – Anna

+0

"私の変数に値に影響を与える"とはどういう意味ですか?どのような変数ですか?どのように影響を与える? –

+0

私は説明しませんでした。申し訳ありません:データを含むjsonファイルを取得しようとしています:ページをロードするときにデータを印刷するngOnInitとサーバーのリンクをファイルから取得して、私のvar home、サーバーからデータを取得する前に、私は私のサービスを介してそれをプッシュするために家の価値を得ていると私はngOnInitでこれをやっている、あなたが詳細情報が必要な場合は尋ねることを躊躇しないでください – Anna

2

私のngOnInit()は、DBからデータを取得するプロセスを呼び出していました。 私はこのメソッドで更新された変数のうち、呼び出し後に利用可能になると予測しました。上で説明したように、呼び出しはobservableに渡されます。つまり、変数はngOnInit()で使用できません。しかし、HTMLページが表示されたときにそれらはすべて埋め込まれていました。

したがって、解決策は、メソッド内で必要な作業をすべて行い、次にHTMLに読み込まれる変数を参照することです。

this.service.getCity(zip).subscribe(
    data => { 
     if (data.errStatus == 0) { 
      console.log("data: " + data.xx.List); 

      this.xx.List = data.xx.List; 
      console.log("data2: " + this.xxList); 
     } else { 
      data.errText; 
      console.log(data.errText); 
     } 
    }, 
    err => console.error(err), 
    () => console.log('done') 
); 
関連する問題