2017-01-26 92 views
1

我有一個Angular2組件,並且我需要使用webservice返回的一些數據填充接口的屬性。 我有這樣的代碼:Angular2:等待顯示組件之前的服務返回響應

ngOnInit() { 
    this.services.callMyService().subscribe(
     response => this.response = response, 
     error => alert(error), 
     () => this.initInterface() 
    ) 
} 


initInterface() { 
    this.myInterface= { 
     field1: '', 
     field2: 'someData', 
     fieldFromService: this.response.field 
    }; 
} 

但似乎之前服務已做的工作是組件顯示。事實上,如果我嘗試訪問例如field1,我得到一個錯誤:

error_handler.js:47 EXCEPTION: Cannot read property 'field1' of undefined 

怎麼了?

+0

移動'this.initInterface();'在成功呼叫回線'this.response = response'之後。 –

+0

也嘗試初始化你的對象('this.myInterface = {field1:'',field2:'',fieldFromService:''};')在你的initInterface() –

+1

之外你必須使用* ngIf =「myInterface」 html代碼來檢查數據是否到達。如果您使用* ngIf,您將不會面臨未定義的錯誤。嘗試一下 –

回答

0

我相信這應該有效。

ngOnInit() { 
    this.services.callMyService().subscribe(
     response => {this.response = response; 
       () => this.initInterface(); 
       }, 
     error => alert(error), 

) 

}