2017-02-27 4 views
2

ハードウェアの戻るボタンを押したときのデフォルトのナビゲーションを防止するにはどうすればよいですか?私はregisterBackButtonActionを試しましたが、望ましくないすべてのページに戻るボタンの動作を上書きします。Ionic 2はハードウェアのバックボタンのデフォルトを防ぎます

これも役に立たなかった。

document.addEventListener("backbutton", (event) => { 
     event.preventDefault(); 
    }, false); 

答えて

8

あなたはIonic docsregisterBackButtonActionで見ることができるように機能を返します。

、呼び出されたときに、そのバックボタン アクションの登録を解除する関数。

ページを離れるとき、あなたはこのように、デフォルトの動作を復元するために、その機能を使用できるように:あなたが見ることができるように

import { Component} from '@angular/core'; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 

    // Property used to store the callback of the event handler to unsubscribe to it when leaving this page 
    public unregisterBackButtonAction: any; 

    constructor(...) { ... } 

    ionViewDidEnter() { 
     this.initializeBackButtonCustomHandler(); 
    } 

    ionViewWillLeave() { 
     // Unregister the custom back button action for this page 
     this.unregisterBackButtonAction && this.unregisterBackButtonAction(); 
    } 

    public initializeBackButtonCustomHandler(): void { 
     this.unregisterBackButtonAction = this.platform.registerBackButtonAction(() => { 
      this.customHandleBackButton(); 
     }, 10); 
    } 

    private customHandleBackButton(): void { 
     // do what you need to do here ... 
    } 
} 

、キーはregisterBackButtonActionメソッドのコールバックを格納することで、後でページを終了するときに使用します(またはデフォルトの動作を復元する場合)。

this.unregisterBackButtonAction = this.platform.registerBackButtonAction(() => { 
    this.customHandleBackButton(); 
}, 10); 
+1

ありがとう!私はイベントリスナーのための順序ハンドラのように何らかの形でそれを格納することについて考えましたが、私はそれらを登録解除する方法を知らずに残しました。 –

+0

それは助けてくれたことを聞いてうれしいです:) – sebaferreras

+1

同じ文字のTypeScriptのバージョンを見ることが大好きです –

関連する問題