我正在使用Ionic 2,并且有一组选项卡。每个选项卡都有自己的导航堆栈。
用户可以深入到任何选项卡中的几个页面,然后切换选项卡。
问题是选项卡1中存在影响选项卡2内容的交互。我发现,如果用户按照特定的顺序执行某些操作,那么我会得到一个错误:
运行时错误
未捕获(承诺中):未找到removeView
我认为这是因为Ionic正试图删除一个由于内容已更改而不再存在的视图。
在选项卡1中,用户按下按钮加载选项卡2。该应用程序将他们所做的选择保存在本地存储中,然后在根页面上加载Tab 2。我使用以下代码选择选项卡2:
this.navCtrl.parent.select(1);
我相信我可以通过在选择选项卡时转到导航堆栈的根来防止这个问题,但我该怎么做呢?
我试过了:
this.navCtrl.parent.select(1);
this.navCtrl.parent.goToRoot();
但有了这个,什么都没发生。选项卡没有更改,也没有任何错误。
所以,我的问题是:如何更改一个选项卡并从另一个选项卡导航到导航堆栈的根?
对于我的应用程序的常规导航堆栈之外的一些页面(带有延迟加载的Ionic 3),我使用以下代码,在导航到新页面(popToRoot)之前设置根(setRoot):
this.navCtrl
.setRoot('YourPage')
.then(() => {
this.navCtrl.popToRoot();
}, err => console.log(err))