navigateForward 不会触发 Ionic 4 中的构造函数

navigateForward doesn't trigger constructor in Ionic 4

我这样在页面之间发送数据:

  this.navCtrl.navigateForward(['artist-info-page'], {
    state: {
      fullArtist: item,
      simpleSearch: true
    }
  })

大多数时候这会触发 'artist-info-page' 的构造函数,我在其中读取状态如下:

this.artistInfoParams.fullArtist = this.router.getCurrentNavigation().extras.state.fullArtist

但有时 navigateForward 不会触发构造函数,所以我无法检索参数。它只是调用 ionViewWillEnter,根据我的理解,我无法访问路由器的导航状态。

我也尝试移动到 router.navigate 而不是使用 NavController,我切换到一页并且行为是相同的。我没有切换我的整个项目,因为我经常使用 NavController,但它似乎没有帮助。

我是不是做错了什么?或者这是一个错误,如果是,您知道任何解决方法吗?

我决定通过定义我自己的页面间数据传输服务来解决这个问题。我的决定是基于这个伟大的link。我现在实现了一些更简单的东西,因为它对我来说已经足够了——一个简单的 class 只有一个参数叫做 state:

export class DataServiceProvider {

    public state: any;

}

然后我在导航到页面之前简单地填写状态参数:

var localState = {
  fullArtist: item,
  simpleSearch: true
};
this.dataService.state = localState;
this.navCtrl.navigateForward('artist-info-page');

并在页面中检索:

  ionViewWillEnter() {
    var localState = this.dataService.state;
  }

当然,space 将来会有一些改进,例如确保不保留旧页面转换的状态(当当前状态不需要状态时)。