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

时间:2017-10-16 13:03:40

标签: javascript angular typescript ionic-framework ionic2

我正在使用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 个答案:

答案 0 :(得分:1)

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

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