Пожалуйста, взгляните на этот фрагмент кода; Я использую его для чего-то другого, но я думаю, это может пригодиться:
import { Nav, Platform, IonicApp, ... } from 'ionic-angular';
@Component({
selector: 'page-custom',
templateUrl: 'custom.html'
})
export class CustomPage {
constructor(private platform: Platform,
private ionicApp: IonicApp) {
// ...
}
public showModalByClosingPreviousOne(): void {
let activePortal = this.ionicApp._loadingPortal.getActive() ||
this.ionicApp._modalPortal.getActive() ||
this.ionicApp._toastPortal.getActive() ||
this.ionicApp._overlayPortal.getActive();
if (activePortal) {
// Dismiss the active portal
activePortal.dismiss();
activePortal.onDidDismiss(() => {
// Here you can show the new one...
});
return;
}
}
// Or maybe you can just use the `activePortal` property to avoid
// showing another loading instead of closing the previous one.
public showNewModal(): void {
let activePortal = this.ionicApp._loadingPortal.getActive() ||
this.ionicApp._modalPortal.getActive() ||
this.ionicApp._toastPortal.getActive() ||
this.ionicApp._overlayPortal.getActive();
if (!activePortal) {
// Show your modal
}
}
}
Это хорошо. Но мне нужно обнаружить это не в компоненте. Мне нужно обнаружить его в одном из моих классов обслуживания. У вас есть решение? –
Ваши услуги могут также ввести класс ионипапса и проверить там. – misha130
@AlexanderZakusilo Это очень плохая практика делать вещи, связанные с видом (например, показ загрузки) из службы. Вы должны проверить, нужно ли показывать модальный компонент из вашего компонента перед вызовом службы. Когда служба завершится, вы снова спрячете окно загрузки из компонента. – sebaferreras