web-dev-qa-db-ja.com

バック履歴からビューを削除する-Ionic2

Ionic2のバック履歴(またはナビゲーションスタック)からビューを削除する方法を知っている人はいますか?

In Ionic 1私はこれを解決しました

this.$ionicHistory.nextViewOptions({
  disableAnimate: true, 
  disableBack: true
});

たとえば、ログインが正常に実行されたら、履歴からアプリケーションのログインページを完全に削除する場合など、非常に便利です。

Android端末がデバイス上に独自の物理的な戻るボタンを取得したため、このような場合、戻るボタンを表示しないだけでは十分ではありません。

ログイン関数が成功したプロミスを返した後、スタックの次のページをプッシュする前に試しました。

this.navController.pop();

または

this.navController.remove(this.viewCtrl.index);

しかし、残念ながら両方とも成功しませんでした:(

14
David Dal Busco

https://forum.ionicframework.com/t/solved-disable-back-in-ionic2/57457 のobrejacatalinは解決策を見つけました

this.nav.Push(TabsPage).then(() => {
  const index = this.nav.getActive().index;
  this.nav.remove(0, index);
});

だから、最初に次のページをプッシュし、約束の答えを待ってから、現在のビューを削除することが重要だと思います

21
David Dal Busco

1つのバックビューを削除するには、スタックから削除するstartIndexとページ数を使用する必要があります。

    this.navCtrl.Push(NextPage)
    .then(() => {
      const startIndex = this.navCtrl.getActive().index - 1;
      this.navCtrl.remove(startIndex, 1);
    });

RemoveView(viewController)などのその他のオプションについては、このドキュメントを参照してください。 https://ionicframework.com/docs/v2/api/navigation/NavController/#remove

17
Ilkka Nisula

Ionic 3でも同じ問題が発生しました。
したがって、履歴をリセットするのは2つの手順のみです。

// ...
constructor(public navCtrl: NavController) { }
// ...
this.navCtrl.setRoot(NewPageWithoutPrev);
this.navCtrl.popToRoot();
// ...

リンク:
https://ionicframework.com/docs/api/navigation/NavController/#setRoot
https://ionicframework.com/docs/api/navigation/NavController/#popToRoot

5
Sergey Kanygin