Символ загрузки Ioni c 4 сбрасывается до того, как наблюдаемое разрешится - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть несколько асинхронных задач, которые запускаются перед переходом на домашний экран. Я запускаю загрузочный счетчик до того, как эти задачи были инициированы, и закрываю загрузочный счетчик внутри метода ionViewWillLeave ().

Я ожидаю, что загрузочный счетчик продолжает загружаться, так как эти асинхронные задачи заканчивают sh их выполнение и один раз это сделано, загрузочный счетчик должен быть исключен только из метода ionViewWillLeave.

Мой текущий код выглядит следующим образом:

export class MyComponent implements OnInit{
      ngOnInit(){}
      buttonClicked(){
         this.ionLoadingService.present();
         zip(Obs1, Obs2).pipe(switchMap(()=>Obs3))
                        .subscribe(()=>{navigate('/app/home')});
      }
      ionViewWillLeave(){
        this.ionLoadingService.dismiss();
      }
}
export class IonLoadingService {

   public loadingElement: HTMLIonLoadingElement;
   private loaderPresented: boolean = false;
   constructor(private loadingController: LoadingController) {
   }

   async present() {
     if (!this.loaderPresented) {
       this.loaderPresented = true;
       this.loadingElement = await this.loadingController.create({
         cssClass: 'custom-loading'
      });
     return await this.loadingElement.present();
   }
 }

Примечание. Все наблюдаемые являются вызовами API, которые выполняются вне зоны angular. Текущее поведение загрузки счетчика: он исчезает, как только начинает выполняться внешняя наблюдаемая.
Как решить эту проблему?

...