2017-10-10 13 views
0

私はIonic Appで電話の戻るボタンを無効にしようとします。イオン3:携帯電話の戻るボタンでモーダルを閉じます

このコードでは、私がページにいない場合はモーダルを開いてアプリケーションを閉じ、ページを閉じることができます。

しかし、これで開いたモーダルを閉じることはできません。私はそれを閉じるためのモーダルであるかどうかをどのように検出できますか?

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

答えて

1

あなたのモーダルにページ名を付けることができ、どこのアプリからでもアクセスできます。これを試してみてください...あなたのモーダル

pageName = 'YOU_PAGE_NAME'; 
インサイド

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

1

1.Import IonicApp:

import {IonicApp } from 'ionic-angular'; 

2.Addあなたのコンストラクタに:

private ionicApp: IonicApp 

3.Insideあなたplatform.registerBackButtonAction追加:

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

私はここで答えを見つけました: https://github.com/ionic-team/ionic/issues/6982

関連する問題