2016-06-20 13 views
4

Ionic2でネイティブのbackButtonイベントハンドラを追加したいとします。問題は、Ionic2のドキュメントでPlatformインスタンスのregisterBackButtonActionメソッドを使用すると言われていますが、そのようなメソッドはありません。Ionic 2 - backButtonの処理方法

registerBackButtonActionの代わりに、EventEmitterタイプのbackButtonプロパティがあります(ただし、動作していないか、購読する方法がわかりません)。

アイデア? マルチン

答えて

1

あなたはあなたのTSファイルは、あなたがコードの下に使用することができます

// Import  
    import {ComponentInstruction} from '@angular/router-deprecated'; 

    // Class 
    export class ViewImagePge { 
    public prev: ComponentInstruction; 
    } 

    public routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction): void { 
     this.prev = prevInstruction; 
    } 

    // navigateBack() Function 

    public navigateBack(): void { 
    if(this.prev && this.prev.routeName === 'Foo') { 
      this.location.back(); 
     } else { 

      // can keep default path 

      this.router.navigate(['/Foo']); 
     } 
    } 
0

が含まれていangular2 routerOnActivate ..場所.back()

 <button danger (click)="navigateBack()">Danger</button> 

で処理することができます。それは私がいただきました!問題を知っている(イオンから)asingマイクの後、私は今、数日のハードウェアbackbuttonsを扱うとして

platform.registerBackButtonAction(function() { 

    if(menu.isOpen()) 
       { 
       menu.close(); 
       }else 
       { 
       nav.pop(); 
       }   
    }, 100); 
1

モバイルデバイスの押された戻るボタンで動作します。

問題は、優先順位が階層的ではないということです。デフォルトでは、デフォルトの優先度値(0)を持つアクションは1つだけあり、そのアクションはすべてを処理します。

カスタムアクションを追加する場合は、デフォルトのコードアクションをアクションに追加する必要があります。そうでない場合は、オーバーライドし、たとえばサイドメニューを閉じません。

githubには、バックボタンサービスと2ページのサイドメニューを持つdemoがあります。 1ページ目では、アプリケーションを終了するためのダブルクリックがあり、2ページ目では、両方のページで、私はトーストを表示する代わりに閉じるためにサイドメニューを処理します。

モーダルは扱えませんが、できるだけ早く追加したいと思います。

これがあなたに役立つことを願っています。

+0

偉大な答えは、あなたの説明は私を助けた!ありがとう – JoeriShoeby

+0

おかげで:) –

関連する問題