2017-10-10 4 views
0

J'essaie de remplacer le bouton de retour du téléphone dans mon application Ionic.Ionic 3: Fermer le modal avec le bouton de retour du téléphone

Ce code me permet d'ouvrir un modal pour fermer l'application si je ne suis pas dans une page, sinon fermer la page. Mais cela ne me permet pas de fermer un modal ouvert. Comment puis-je détecter si je suis dans un modal pour le fermer?

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; 
      } 
     } 
     } 
    }); 
    } 

Répondre

1

Vous pouvez donner un nom de page à votre modal et vous pouvez y accéder à partir de n'importe où dans l'application. Essayez ceci ..

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 
       } 
     }); 

l'intérieur de votre modal

pageName = 'YOU_PAGE_NAME'; 
1

1.Import IonicApp:

import {IonicApp } from 'ionic-angular'; 

2.Ajoutez à votre constructeur:

private ionicApp: IonicApp 

3.Inside votre platform.registerBackButtonAction ajouter:

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

J'ai trouvé la réponse ici: https://github.com/ionic-team/ionic/issues/6982