platform.registerBackButtonAction () не работает при сборке --prod - PullRequest
0 голосов
/ 01 июня 2018

Я работаю над проектом, используя ionic 3.

ionic cordova run android Я использую эту команду для запуска приложения.

в этой операции platform.registerBackButtonAction() работает нормально ..

Однако, если я использую опцию ionic cordova run android --prod, platform.registerBackButtonAction () не работает.

любая помощьприветствуется.

ниже приведен мой код для работы с кнопкой возврата оборудования.

this.platform.registerBackButtonAction(() => {
    let view = this.nav.getActive();
    if(view.component.name == "NonetworkPage"){
      if (!this.showedAlert) {
        this.confirmExitApp();
      } else {
        this.showedAlert = false;
        this.confirmAlert.dismiss();
      }
    }else{
      if (view.component.name == "HomePage") {
        if (!this.showedAlert) {
          this.confirmExitApp();
        } else {
          this.showedAlert = false;
          this.confirmAlert.dismiss();
        }
      } else if (view.component.name != "HomePage" && view.component.name != "LoginPage") {
        if (this.nav.length() == 1) {
          this.nav.setRoot(HomePage);
        } else if (this.nav.length() > 1) {
          this.nav.pop();
        }
      } else if (view.component.name == "LoginPage") {
        this.confirmExitApp();
      }
    }
  });

и ниже для всплывающего окна подтверждения выхода

 confirmExitApp() {
    this.showedAlert = true;
    this.confirmAlert = this.alertCtrl.create({
      title: "Exit App?",
      message: "Are you sure you want to exit App?",
      enableBackdropDismiss: true,
      cssClass: 'confirmCustomCss',
      buttons: [
        {
          text: 'No',
          handler: () => {
            this.showedAlert = false;
            return;
          }
        },
        {
          text: 'Yes',
          handler: () => {
            this.platform.exitApp();
          }
        }
      ]
    });
    this.confirmAlert.present();
  }

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

в ионном 3 это дает название текущей страницы:

const currentActivePage = this.nav.getActive().id;

И это можно сравнить с

if(currentActivePage == 'LoginPage')
0 голосов
/ 01 июня 2018

Поскольку флаг prod минимизирует наш код, а также запутывает имена страниц, но вы можете решить эту проблему, используя этот код, возможно, он поможет вам и будет работать как на сборке --prod, так и на сборке

 platform.registerBackButtonAction(() => {
    let view = this.navCtrl.getActive();
    let page = view ? this.navCtrl.getActive().instance : null;
    if (page && (page instanceof Mypage)  

Не забудьте импортировать Mypage в app.component.ts

...