从选项卡转到根页面

时间:2017-03-04 20:02:19

标签: angular typescript ionic-framework ionic2 ionic3

我想知道如何在使用标签时返回appComponent中定义的rootPage。 setRoot方法无法正常工作。在标签页中使用它时,不会清除导航堆栈。在'主页'上,后退按钮可见,而不是导航切换,并显示标签的标题。

  

默认情况下,页面会被缓存并在导航时留在DOM中   远离但仍然在导航堆栈中(在   push()例如)。它们从被移除时被摧毁   导航堆栈(在pop()或setRoot()上)。

上面的陈述让我期望当我使用setRoot页面时从缓存中清除。当它在普通页面中使用但不在选项卡中时,这似乎是正确的。

在标签页的类中,有一个功能可以在单击按钮时将根页面设置为主页。

goToHome() {
 this.navCtrl.setRoot(HomePage);
}

如何确保当我们返回到homePage时,没有后退按钮,并且使用了组件的HTML模板中可用的主页标题。

2 个答案:

答案 0 :(得分:25)

就像你在docs

中看到的那样
  

请注意,每个<ion-tab>绑定到[root]属性,就像    在上面的导航部分。那是因为每个人   <ion-tab>实际上只是一个导航控制器。 这意味着每一个   tab有自己的历史堆栈,并注入了NavController个实例   每个标签的子@Components对每个标签都是唯一的

因此,当以root身份设置页面时,您将使用该选项卡中的导航堆栈,而不是整个应用程序中的导航堆栈。这就是你需要通过以下方式获得主导航堆栈的原因:

constructor(private app: App,...) {...}

然后

yourMethod(): void {
    this.app.getRootNav().setRoot(YourPage);
}

答案 1 :(得分:2)

试试这个对我来说很棒

this.childNavCtrl.setRoot(HomePage);