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 :(
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
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
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