Ionic4 или 3 LoadingController (диалоговое окно выполнения)

#ionic-framework #ionic3 #ionic4

#ionic-framework #ionic3 #ionic4

Вопрос:

Я использую ionic4 LoadingController в приложении. он отключается через определенный интервал времени, но я этого не хочу. Я не хочу устанавливать время. перед вызовом веб-api я буду отображать LoadingController, и я хочу отключить его всякий раз, когда получу ответ от службы rest. кто-нибудь может мне помочь, как это реализовать?

Ответ №1:

Вы должны сделать что-то вроде этого:

 async function presentLoading() {
      const loader= document.querySelector('ion-loading-controller');
      await loader.componentOnReady();

      const element = await loader.create({
        message: 'Please wait...',
        spinner: 'crescent',
        duration: 2000
      });
      return await element .present();
}
  

Ответ №2:

 // Initialize variable
private loader: any;
private loaderActive: boolean = false;

// Generic method to display the loader
async showLoader() {
this.loaderActive = true;
this.loader = await this.loadingCtrl.create({
  message: 'Please wait...',
  spinner: 'crescent',
});
await this.loader.present();
}

// Generic method to dismiss the loader
async dismissLoader() {
if (this.loaderActive === true) {
  await this.loader.dismiss();
}
this.loaderActive = false;
}

Before api call just call the method this.showLoader(), once you get the response 
just call the this.dismissLoader() method.
  

Ответ №3:

Я бы предположил, что вы используете HttpClient для получения ваших данных из вашего сервиса rest, поэтому я бы предложил вам этот сценарий. Прежде всего, мы начнем с отображения загрузчика:

 let loader = await this.loadingCtrl.create({
      //Your loader content and options
    });
loader.present();//show the loader
  

После этого мы получаем данные с помощью HttpClient . предположим, что мы внедрили этот способ public http: HttpClient , так что это зависит от вашего rest-сервиса http mthod (post, get, put …). код будет следующим:

 this.http.get("url").subscribe((data: any) => {
//process your data here
loader.dismiss();//then we hide the loader
});
  

Оставьте мне комментарий, если я неправильно его понял.