Я пытаюсь представить модальное окно во время изменения маршрута для формы, но застреваю в том, как вернуть результат в ionViewCanLeave.
ionViewCanLeave(): boolean {
debugger;
let modal = this.modalCtrl.create(this.cancelModal);
let returnStatement = null;
modal.onDidDismiss(data => {
debugger;
returnStatement = data;
});
modal.present();
if (returnStatement !== null ){
return returnStatement;
}
}
Как мне дождаться срабатывания onDidDismiss перед вызовом оператора return для ionViewCanLeave?





Я думаю, тебе лучше изменить свой образ действий, чтобы делать то, что ты хочешь.
Насколько я знаю, невозможно остановить возвращение ionViewCanLeave().
Таким образом, создайте другую функцию, которая асинхронно выполняет функция выхода из страницы после модальный onDidDismiss, как показано ниже.
checkCanLeave(){
debugger;
let modal = this.modalCtrl.create(this.cancelModal);
modal.onDidDismiss(data => {
debugger;
// Put on your leave page function like 'this.navCtrl.pop()' orr 'this.viewCtrl.dismiss'
});
modal.present();
}
Да, это кажется правильным. Я только что взглянул на view-controller.ts в гитхабе. И я обнаружил, что ionViewCanLeave может вернуть boolean | string | Promise<any>.
В итоге я использовал async / await для ionViewCanLeave () как suchasync ionViewCanLeave () {if (this.submitted) {return true; } else {const shouldLeave = ждать this.confirmLeave (); return shouldLeave; }}