我正在将Ionic 3应用程序移植到Ionic4。我已经切换到使用新的路由,以及延迟加载的模块等。
我有一个侧面菜单,可以从任何其他页面选择我的主页。
但是,每当我从一个主要功能页面中单击“后退”按钮时,我总是想返回至主页(而不是返回当前路线堆栈中的另一个功能页面)
Ionic 4
版本中用于侧面菜单选择的点击处理程序代码如下(pageItem.pageRoutePath包含新路由)
public openPage(pageItem: AppPageItem): void {
try {
this.logger.debug(`openPage ${pageItem.title}`);
// Try to force homepage to be where the back button takes us (but this doesn't seem to work)
this.navController.navigateRoot(Constants.vals.pageRoutePaths.home, { replaceUrl: true });
if (pageItem.pageRoutePath != Constants.vals.pageRoutePaths.home) {
this.navController.navigateForward(pageItem.pageRoutePath);
}
} catch (error) {
this.logger.error(`openPage ${error}`);
}
}
我正在尝试使用{ replaceUrl: true }
参数来使它起作用,但是并没有任何区别。
在Ionic 3
中,我可以做以下描述的事情...
this.nav.setRoot(HomePage);
if (pageItem.page != HomePage) {
this.nav.push(pageItem.page);
}
我不希望从每个页面上获取此信息,而只是从我的功能页面上获取信息,例如,某些功能页面导航至“详细信息:页面”,而我确实想要后退按钮即可返回到其导航页面,即默认行为。
有人知道我如何在Ionic 4
中实现这一目标吗?
在此先感谢您的帮助
[19年4月28日更新]
我以为我可以用..
this.navController.navigateForward(pageItem.pageRoutePath, { replaceUrl: true });
只有一页额外的页面才有效,但是如果有整个页面则没有效果-因此问题仍然悬而未决(因此将其删除作为答案)
答案 0 :(得分:0)
我们可以使用路由器来做到这一点:
let navigationExtras: NavigationExtras = {
skipLocationChange: true,
replaceUrl: true
};
//Where page is the page where app will navigate
this.router.navigate([’/page’], navigationExtras);