订阅后如何在Ionic中填充角度变量?

时间:2017-10-21 00:53:31

标签: angular web-services typescript ionic-framework subscribe

我正在尝试从服务器获取数据,然后在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();
      }
    );

如果我在页面html文件中写{{articlearray.id}},我收到了错误

Cannot read property 'id' of undefined

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

如果我在页面html文件中写{{articlearray.id}},我收到了错误

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

{{articlearray?.id}}

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

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