web-dev-qa-db-fra.com

Supprimer une vue de l'historique arrière - Ionic2

Quelqu'un sait comment supprimer une vue de l'historique (ou de la pile de navigation) dans ionic2?

Dans Ionic 1 j'ai résolu cela avec

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

Ce serait vraiment utile, par exemple, pour supprimer complètement la page de connexion de mon application de l'historique une fois la connexion réussie.

Ne pas afficher le bouton de retour n'est pas suffisant dans ce cas, car les terminaux Android ont leur propre bouton de retour physique sur les appareils.

J'ai essayé, après que ma fonction de connexion a renvoyé une promesse réussie et avant de pousser la page suivante dans la pile:

this.navController.pop();

ou

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

mais malheureusement, les deux n'ont pas réussi :(

14
David Dal Busco

obrejacatalin sur le https://forum.ionicframework.com/t/solved-disable-back-in-ionic2/57457 a trouvé la solution

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

donc je suppose qu'il est important de pousser la page suivante en premier, d'attendre la réponse promise puis de supprimer la vue actuelle

21
David Dal Busco

Pour supprimer une vue arrière, vous devez utiliser startIndex et le nombre de pages à supprimer de la pile.

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

Voir ce document pour plus d'options comme removeView (viewController): https://ionicframework.com/docs/v2/api/navigation/NavController/#remove

17
Ilkka Nisula

J'ai le même problème avec Ionic 3.
Donc, seulement deux étapes pour réinitialiser l'historique:

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

Liens:
https://ionicframework.com/docs/api/navigation/NavController/#setRoot
https://ionicframework.com/docs/api/navigation/NavController/#popToRoot

5
Sergey Kanygin