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 将来会有一些改进,例如确保不保留旧页面转换的状态(当当前状态不需要状态时)。
我这样在页面之间发送数据:
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 将来会有一些改进,例如确保不保留旧页面转换的状态(当当前状态不需要状态时)。