有人可以解释一下这里发生的事情吗
private formatFormValues(depositDates) {
return depositDates.map((depositDate) => {
console.log('deposit dates', depositDates);
console.log('deposit dates - amount', depositDate.controls.effectiveDates.value);
return {
effectiveDates: depositDate.controls.effectiveDates.value,
depositDate: depositDate.controls.depositDate.value,
};
});
}
我有这个depositDates
formGroup实例,我正在记录它,看起来像这样:
然后,我尝试在此实例中访问values
,由于某种原因,amount
始终显示为""
,尽管显示为活动且已设置数字,但该字符串仍为空价值吗?
我是否在某些地方缺少某些东西/错误地访问了某些东西?
答案 0 :(得分:2)
也许该方法在map函数完成之前返回了值?您可以尝试下面的代码。
async formatFormValues(depositDates) {
return new Promise(async (resolve, reject) => {
resolve(depositDates.map(async (depositDate) => {
console.log('deposit dates', depositDates);
console.log('deposit dates - amount', depositDate.controls.effectiveDates.value);
return {
effectiveDates: depositDate.controls.effectiveDates.value,
depositDate: depositDate.controls.depositDate.value,
};
}));
});
}
访问它时,您可以使用:
this.formatFormValues(depositDates).then(resp => {
// set form values
});
答案 1 :(得分:1)
有时,未通知Angular更新表单组的value
。您可以在表单组或所需的表单控件上手动调用updateValueAndValidity。
答案 2 :(得分:0)
结果证明,我在setValue()
调用中有一个选项参数,以停止任何事件的发出,尽管在更改之前就存在该值,但仍不明白为什么它会访问金额值,答案是可以解释的。