2017-10-10 2 views
0

Ich versuche, den Telefon zurück Knopf in meiner Ionic App zu überschreiben.Ionic 3: Schließen Sie modal mit Telefon zurück Knopf

Dieser Code erlaubt mir, ein Modal zu öffnen, um die App zu schließen, wenn ich nicht auf einer Seite bin, sonst die Seite schließen.

Aber das erlaubt mir nicht, ein geöffnetes Modal zu schließen. Wie kann ich feststellen, ob ich in einem Modal bin, um es zu schließen?

platform.registerBackButtonAction(() => { 

     let nav = app.getActiveNav(); 
     let activeView: ViewController = nav.getActive(); 
     console.log(activeView); 

     if(activeView != null){ 
     if(nav.canGoBack()) { 
      activeView.dismiss(); 
     } else{ 
      let alert = this.alertCtrl.create({ 
      title: this.pdataManager.translate.get("close-app"), 
      message: this.pdataManager.translate.get("sure-want-leave"), 
      buttons: [ 
       { 
       text: this.pdataManager.translate.get("no"), 
       handler:() => { 
        this.presentedAlert = false; 
       }, 
       role: 'cancel', 
       }, 
       { 
       text: this.pdataManager.translate.get("yes"), 
       handler:() => { 
        this.presentedAlert = false; 
        this.platform.exitApp(); 
       } 
       } 
      ] 
      }); 
      if(!this.presentedAlert) { 
      alert.present(); 
      this.presentedAlert = true; 
      } 
     } 
     } 
    }); 
    } 

Antwort

1

Sie können Ihrem Modal Seitenname geben und Sie können von überall in App darauf zugreifen. Versuchen Sie dies ..

import { App } from 'ionic-angular'; 

    constructor(public app: App){ 

    } 

     platform.registerBackButtonAction(() => { 

       let nav = this.app.getActiveNav(); 
       let view = nav.getActive().instance.pageName; 


       if (view == YOU_PAGE_NAME) { 
       //You are in modal 
       } else { 
       //You are not in modal 
       } 
     }); 

In Ihrem modalen

pageName = 'YOU_PAGE_NAME'; 
1

1.Importieren IonicApp:

import {IonicApp } from 'ionic-angular'; 

2.Add zu Ihrem Konstruktor:

private ionicApp: IonicApp 

3.Inside Ihre platform.registerBackButtonAction add:

let activeModal=this.ionicApp._modalPortal.getActive(); 
if(activeModal){ 
    activePortal.dismiss(); 
     return; 
    } 

Ich fand die Antwort hier: https://github.com/ionic-team/ionic/issues/6982

Verwandte Themen