我想知道如何在使用标签时返回appComponent
中定义的rootPage。 setRoot方法无法正常工作。在标签页中使用它时,不会清除导航堆栈。在'主页'上,后退按钮可见,而不是导航切换,并显示标签的标题。
默认情况下,页面会被缓存并在导航时留在DOM中 远离但仍然在导航堆栈中(在 push()例如)。它们从被移除时被摧毁 导航堆栈(在pop()或setRoot()上)。
上面的陈述让我期望当我使用setRoot页面时从缓存中清除。当它在普通页面中使用但不在选项卡中时,这似乎是正确的。
在标签页的类中,有一个功能可以在单击按钮时将根页面设置为主页。
goToHome() {
this.navCtrl.setRoot(HomePage);
}
如何确保当我们返回到homePage时,没有后退按钮,并且使用了组件的HTML模板中可用的主页标题。
答案 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);