【问题标题】:Ionic 2: Handling android back buttonIonic 2:处理android后退按钮
【发布时间】:2026-02-13 02:40:01
【问题描述】:

我正在尝试在 ionic 2 中处理我的 android 后退按钮,下面是我的代码,当用户从主页或登录页面单击时,它将让用户退出应用程序

let alert = this.alertCtrl.create({
            title: 'Kmart',
            message: 'Do you want exit kmart app ?',
            buttons: [
              {
                text: 'Cancel',
                role: 'cancel',
                handler: () => {
                  this.logger.info("cancel clicked")
                }
              },
              {
                text: 'ok',
                handler: () => {
                  this.platform.exitApp();
                }
              }
            ]
          });
          
       this.platform.registerBackButtonAction(() => {
          console.log('back button pressed')
          if (this.navCtrl.canGoBack()) {
            console.log('nav can go back')
            this.navCtrl.pop()
          } else {
            //here i have to show the alert for login and home page
            alert.present();
          } 
        }, 100);

上面这段代码放在我的home.ts文件中

我无法获取当前页面名称,因此我无法让我的应用退出。

当用户在主屏幕或登录屏幕上双击应用程序时如何退出应用程序。

【问题讨论】:

    标签: angular ionic2


    【解决方案1】:

    使用

    getActive() 返回当前组件检查实例的ViewController。 在 app.component.ts 中使用 ViewChild 获取 navController 在模板中设置#mynav

    模板:<ion-nav #myNav [root]="rootPage"></ion-nav>

    在组件类中:

    @ViewChild('myNav') navCtrl: NavController
    //to check the condition
    let view = this.navCtrl.getActive();
    if(view instanceof HomePage)
    

    查看ionic forum discussion

    【讨论】:

    • EXCEPTION: No provider for t! 我面临的这个错误
    • getActive 返回一个 viewController.. 也许尝试在构造函数中注入 viewcontroller..
    • 现在我解决了这个问题,但我已经给出了 if 条件,即您在我的 home.ts 文件中回答了if(this.navCtrl.getActive().component === HomePage),但它可以用于登录,还有什么问题我没有提到登录页面如何它正在工作
    • 您的意思是登录页面的主页条件为真?