2017-10-21 86 views
0

我试图从服务器获取数据,然后在Ionic页面中显示,到目前为止,我可以获取没有问题的数据并在控制台中检查。 但是,服务器如何返回给我?订阅后我如何在离子中填充角度变量?

所以我有这个功能的提供商

public LoadArticle(article_id:any){ 
    let headers = new Headers(); 
    let postData:any; 
    postData = { 
     task: 'GetArticle', 
     article_id: article_id 
    } 

    headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
    return this.http.post(this.apiUrl, JSON.stringify(postData),{ headers: headers }); 
    } 

我这样称呼它在页面上我想显示

constructor(
    public navCtrl: NavController, 
    public controller: WebservicesProvider 
) { 

    } 
this.controller.LoadArticle(1).subscribe(
     data => { 
     let retorno: any; 
     retorno = data; 
     console.log(JSON.parse(retorno._body)); 
     // this.navCtrl.setRoot(AbasPage);   
     // this.article_array = retorno._body.dados; 

     this.articlearray.id = retorno._body.dados.id; 

     this.articleLoaded = true; 
     }, 
     error => { 
     console.log(error) 
     this.controller.endLoading(); 
     }, 
    () => { 
     this.controller.endLoading(); 
     } 
    ); 

如果我写{{articlearray.id}}页面HTML文件我得到了一个错误

Cannot read property 'id' of undefined 

什么即时做错了?

回答

1

如果我写{{articlearray.id}}在页面的html文件,我得到一个错误

您可以使用安全导航操作:

{{articlearray?.id}} 

这将阻止错误,然后在检索到数据后立即显示数据。

当模板第一次显示时,数据尚未检索,这就是您看到错误的原因。在稍后数据被检索的时间点,Angular的变化检测将被通知并且数据将出现。