从后面的历史记录中删除视图 - Ionic2

Dav*_*sco 14 ionic2

任何人都知道如何从ionic2中的后历史(或导航堆栈)中删除视图?

在Ionic 1中,我解决了这个问题

this.$ionicHistory.nextViewOptions({
  disableAnimate: true, 
  disableBack: true
});
Run Code Online (Sandbox Code Playgroud)

例如,在执行成功登录后从历史记录中完全删除应用程序的登录页面将非常有用.

在这种情况下,只是没有显示后退按钮是不够的,因为Android终端在设备上有自己的物理后退按钮.

我尝试了,在我的登录功能返回成功的承诺之后,在推送堆栈中的下一页之前:

this.navController.pop();
Run Code Online (Sandbox Code Playgroud)

要么

this.navController.remove(this.viewCtrl.index);
Run Code Online (Sandbox Code Playgroud)

但不幸的是两个都没有成功:(

Dav*_*sco 21

在obrejacatalin https://forum.ionicframework.com/t/solved-disable-back-in-ionic2/57457找到了解决办法

this.nav.push(TabsPage).then(() => {
  const index = this.nav.getActive().index;
  this.nav.remove(0, index);
});
Run Code Online (Sandbox Code Playgroud)

所以我想首先推送下一页,等待承诺答案,然后删除当前视图是很重要的

  • 是的,它只删除一页,而且我是OP,我确实回答了我自己的问题,所以是的,它肯定解决了我的问题;) (3认同)
  • @DavidDalBusco 对此嗤之以鼻 (2认同)

小智 17

要删除一个backview,您需要使用startIndex和要从堆栈中删除的页数.

    this.navCtrl.push(NextPage)
    .then(() => {
      const startIndex = this.navCtrl.getActive().index - 1;
      this.navCtrl.remove(startIndex, 1);
    });
Run Code Online (Sandbox Code Playgroud)

有关removeView(viewController)等更多选项的信息,请参阅此文档:https://ionicframework.com/docs/v2/api/navigation/NavController/#remove


小智 5

我遇到了同样的问题Ionic 3.
因此,重置历史记录只需两步:

// ...
constructor(public navCtrl: NavController) { }
// ...
this.navCtrl.setRoot(NewPageWithoutPrev);
this.navCtrl.popToRoot();
// ...
Run Code Online (Sandbox Code Playgroud)

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

  • 我不需要`popToRoot`来电.此外,您可以将NavOptions传递给setRoot,例如`animate:true`和`direction:"forward"`以使其平滑地动画到新根. (3认同)
  • 可以确认,只需要`setRoot`来清除历史记录并开始新的页面 (3认同)