我对Ionic 2开发很新,并希望得到您的帮助。有没有人知道在onDidDismiss()之后会发生什么事件?
presentProfileModal() {
let profileModal = this.modalCtrl.create(Profile, { userId: 8675309 });
profileModal.onDidDismiss(data => {
console.log(data);
});
profileModal.present();
}
我知道如何在模态页面onDidDismiss()
之后将参数存储到父属性中。
编辑:
所以这是我无法解决的实际代码。在使用vs2015进行调试时,在调用this.viewCtrl.dismiss(this.calibration)
并且我的断点位于onDidDismiss()事件后,父组件显示为未定义。内部data
有值,但我无法将结果存储到父组件。
Parent Component Undefined Error Image
这是创建我的模态的代码:
public goToCalibration(calibration, seqNo) {
this.selectedCalibrationTask = seqNo;
let modal = this.modalCtrl.create(ModalCalibrationPage, { "calibration": calibration });
modal.onDidDismiss(data => {
this.value = data;
//for (var i = 1; i < this.task.TaskItems.length; i++) {
// if (this.task.TaskItems[i].SeqNo == this.selectedCalibrationTask) {
// if (data != null) {
// this.task.TaskItems[i].Calibration = data;
// }
// break;
// }
//}
});
modal.present();
}
模态TS代码:
export class ModalCalibrationPage {
public calibration: any;
public constructor(public viewCtrl: ViewController, private navParams: NavParams) {
if (this.navParams.get("calibration") != null) {
this.calibration = this.navParams.get("calibration");
}
else {
this.calibration = {
EquipmentBefore: '',
InstrumentBefore: '',
ControlRoomBefore: '',
EquipmentAfter: '',
InstrumentAfter: '',
ControlRoomAfter: '',
StandardSignal: {
Std1: '',
Std2: '',
Std3: '',
Error1: '',
Error2: '',
Error3: ''
},
BeforeCalibration: {
Std1: '',
Std2: '',
Std3: '',
Error1: '',
Error2: '',
Error3: ''
},
AfterCalibration: {
Std1: '',
Std2: '',
Std3: '',
Error1: '',
Error2: '',
Error3: ''
},
MeasuredVoltage: '',
StandardType: '',
UOM: '',
InstrumentAccuracy: '',
InstrumentCalibrated: false,
Remarks: ''
};
}
}
public dismiss() {
this.viewCtrl.dismiss();
}
public saveCalibration() {
this.viewCtrl.dismiss(this.calibration);
}
}
答案 0 :(得分:4)
如果我理解正确,您希望在父组件中设置data
。
您应该在父级中有一个类属性,并在 onDidDismiss()
回调中的数据值中设置。
value:any;
presentProfileModal() {
let profileModal = this.modalCtrl.create(Profile, { userId: 8675309 });
profileModal.onDidDismiss(data => {
console.log(data);
this.value=data;//here
console.log(JSON.stringify(this.value,undefined,2));
});
profileModal.present();
}
在ViewController的dismiss()
函数中发送的模态中。
this.viewCtrl.dismiss(data)
答案 1 :(得分:0)
这是我在应用suraj解决方案后的答案。我只能在onDidDismiss()
事件后将结果分配给父组件,而不是操纵任何数据。所以我希望这可以帮助那些面对同样问题的人。
家长的TS代码:
public selectedCalibrationTask: any;
public selectedSeqNo: any;
public goToCalibration(seqNo) {
if (this.selectedSeqNo == null)
{
this.selectedSeqNo = seqNo;
}
let modal = this.modalCtrl.create(ModalCalibrationPage, { "calibration": this.selectedCalibrationTask, "seqNo": this.selectedSeqNo });
modal.onDidDismiss(data => {
this.selectedCalibrationTask = data.calibration;
});
modal.present();
}
Modal的TS代码:
public saveCalibration() {
this.viewCtrl.dismiss(this.calibration);
}