首页 文章

如何更改选项卡并转到导航堆栈的根目录?

提问于
浏览
3

我正在使用Ionic 2并有一组标签 . 每个选项卡都维护自己的导航堆栈 .

用户可以在任何选项卡中深入几页,然后切换选项卡 .

问题是选项卡1中存在影响选项卡2内容的交互 . 我发现如果用户按特定顺序执行某些操作,则会出现错误:

运行时错误未捕获(在承诺中):找不到removeView

我相信这是因为Ionic正在尝试删除因内容已更改而不再存在的视图 .

在选项卡1中,用户按下按钮以加载选项卡2.应用程序保存他们在本地存储中所做的选择,然后选项卡2在根页面上加载 . 我使用以下代码选择Tab 2:

this.navCtrl.parent.select(1);

我相信我可以通过在选择选项卡时转到导航堆栈的根目录来防止此问题,但我该怎么办呢?

我试过了:

this.navCtrl.parent.select(1);
this.navCtrl.parent.goToRoot();

但有了这个,没有任何反应 . 选项卡不会更改,也没有错误 .

所以,我的问题是:如何更改选项卡并从另一个选项卡导航到导航堆栈的根目录?

1 回答

  • 1

    对于我的应用程序的常规导航堆栈之外的一些页面(带有延迟加载的Ionic 3),我使用以下代码,在导航到新页面(popToRoot)之前设置根(setRoot):

    this.navCtrl
        .setRoot('YourPage')
        .then(() => {
          this.navCtrl.popToRoot();
        }, err => console.log(err))
    

相关问题