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

问题描述:

我正在使用Ionic 2并拥有一组选项卡。每个选项卡都维护自己的导航堆栈。如何更改选项卡并转到导航堆栈的根目录?

用户可以进入任意选项卡多个页面,然后切换选项卡。

的问题是,有在标签1互动,效果选项卡2的内容是什么我发现是,如果用户不按照一定的顺序一定的动作,然后我得到一个错误:

Runtime Error

Uncaught (in promise): removeView was not found

我认为这是因为Ionic试图删除因内容已更改而不再存在的视图。

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

this.navCtrl.parent.select(1);

,我相信我可以去当选择选项卡中的导航堆栈的根防止这个问题,但我怎么能做到这一点?

我想:

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

但有了这个,什么都不会发生。该选项卡不会更改,并且没有错误。

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

+0

您可以设置选项卡1的根目录(this.navCtrl.setRoot(tab1))。如果这不适合你,那么请把你的代码放在可以复制这个问题的地方。 –

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

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

但是我怎样才能用我的标签来做到这一点?你的代码确实打开了我的页面,但它在当前的导航栏中而不是在另一个页面上。有没有一种方法可以引用我的选项卡并导航回根? – Mike

+0

未经测试,但我认为您可以使用_this.app.getRootNav()_而不是_navCtrl_来完成,如[here](https://*.com/a/42601740/5156280)所述。 – TGrif