2016-07-06 132 views
2

當我登錄我的變量內的值訂閱我有一個值,但外界這樣做時,它得到了一個未定義???:訂閱可觀察值

this._postService.getConf("app/conf/conf.json") 
    .subscribe(res =>{ 
     this.home = JSON.stringify(res); 
     console.log("value :" + this.home); 

我想初始化我家變某一個值,我做它ngOnInit但它是說我很努力之外得到它值undefined:

這是我的函數:

回答

3

那怎麼觀測工作。當來自服務器的響應到達時,傳遞給subscribe(...)的回調被observable調用。

subscribe()之外的console.log()在連接到服務器之前執行。

+0

感謝您的回答,以及如何影響值給我的變量先生?我很輕鬆做到這一點ngOnInit將修復它 – Anna

+0

「影響到我的變量先生的價值」是什麼意思?什麼變量?影響如何? –

+0

對不起,我沒有解釋:我試圖得到一個包含數據的json文件:ngOnInit在加載頁面時打印數據,以及服務器鏈接我從文件中獲取並影響到它我的var主頁,所以在從服務器獲取數據之前,我要獲得主頁的價值,以便通過我的服務推送它,並且我正在對ngOnInit執行此操作,請不要猶豫,詢問是否需要更多信息 – Anna

2

我的ngOnInit()調用了一個從數據庫獲取數據的進程。 我預計在方法中更新的this.##變量在調用後可用。如上所述,該調用傳遞給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') 
);