如何强制Ionic 4后退按钮始终从选定页面转到特定页面

时间:2019-04-25 10:47:42

标签: angular ionic-framework

我正在将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 });

只有一页额外的页面才有效,但是如果有整个页面则没有效果-因此问题仍然悬而未决(因此将其删除作为答案)

1 个答案:

答案 0 :(得分:0)

我们可以使用路由器来做到这一点:

let navigationExtras: NavigationExtras = {
skipLocationChange: true,
replaceUrl: true
 };


//Where page is the page where app will navigate
this.router.navigate([’/page’], navigationExtras);