Angular Ionic 2等待observable加载页面

Angular Ionic 2等待observable加载页面,angular,ionic2,observable,Angular,Ionic2,Observable,我有一个页面,它调用一个API来获得一些要显示的对象,我在构造函数中调用API并订阅它,但是在我获得任何数据之前,页面完成加载,没有显示任何内容 constructor(public navCtrl: NavController, public userData: UserData, public navParams: NavParams, public profissional: ProfissionalData) { this.return_values_horarios_livres(

我有一个页面,它调用一个API来获得一些要显示的对象,我在构造函数中调用API并订阅它,但是在我获得任何数据之前,页面完成加载,没有显示任何内容

constructor(public navCtrl: NavController, public userData: UserData, public navParams: NavParams, public profissional: ProfissionalData) {
  this.return_values_horarios_livres()
  console.log(this.lista_profissional)
}

return_values_horarios_livres(){
  return this.profissional.get_horarios_livres(this.clinica_id, this.especialidade_id).subscribe(
  data => { this.lista_profissional = data.objects;  this._save = data.objects; console.log("pegou aqi"); console.log(data.objects); console.log(this.lista_profissional)},
  err => {},
  ()=>{}
  )
}
控制台日志打印未定义,这意味着数据尚未加载


如何等待变量“lista_profissional”中的内容加载页面?

当api成功或不成功返回响应时,可以使用SplashScreen组件的.hide()方法隐藏splash


您可以从模板中隐藏带有*ngIf指令的组件,直到服务器做出响应。

您可以根据自己的需求以多种方式处理这些问题

案例1 如果您的要求是呈现页面和显示数据,那么您可以使用ngif或switch,我更喜欢switch

 <div [ngSwitch]='status'>
        <div *ngSwitchCase="'loading'">
          // you use simple text or some directive 
           <div>loading<div>
        </div>
        <div *ngSwitchCase="'active'">
            <form>
                <!-- the login inputs from earlier -->
            </form>
        </div>
    </div>
案例2 如果您的要求是先加载数据,然后渲染模板,那么您可以在Angular2中使用
解析器


在路由定义的
解析中使用数据加载。我两天前回答了一个类似的问题,请看这里:如果我使用ngIf,它不会显示任何内容,因为当页面呈现时,它在变量中没有任何内容,它只会防止我在尝试访问未定义的文件时出错。我最终使用了ngIf,但其他选项也可以解决这个问题。谢谢你的回复。
return_values_horarios_livres(){
  return this.profissional.get_horarios_livres(this.clinica_id, this.especialidade_id).subscribe(
  data => { this.lista_profissional = data.objects;  this._save = data.objects; console.log("pegou aqi"); console.log(data.objects); console.log(this.lista_profissional)},
  this.status = 'active';
  err => {},
  ()=>{}
  )
}