嵌套Form数组上的PatchValue [英] PatchValue on a nested FormArray
本文介绍了嵌套Form数组上的PatchValue的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个表单,它有一个包含日期值的嵌套表单数组。当用户选择日期时,将调用一个函数来设置日期的格式,并应更新表单的值。 但是,我很难理解如何访问数组中的特定Form控件…… 这是相关代码
constructor(private formBuilder: FormBuilder, private datepipe: DatePipe) {
this.form = this.formBuilder.group({
loading: this.formBuilder.array([])
});
}
get loadingForm(){
return this.form.get('loading') as FormArray
}
addLoadingTimes(){
const loading = this.formBuilder.group({
StartLoadDate: [],
EndLoadDate: []
})
this.loadingForm.push(loading);
}
//format date from datepicker
changeDateTimeEvent(event:MatDatepickerInputEvent<Date>, index, controlName) {
const d = new Date(event.value);
const date = this.datepipe.transform(d, 'yyyyMMddHHMMss');
this.form.controls['loading'][controlName].at(index).patchValue(date);
}
现在,我正在尝试使用以下行更新值:
this.form.controls['loading'][controlName].at(index).patchValue(date);
但是,显然,这是错误的.
有人能帮忙吗?
这是一场闪电战https://stackblitz.com/edit/formarray-patchvalue
推荐答案
Form数组方法具有at方法来访问使用setValue的特定控件。
尝试:
changeDateTimeEvent(event:MatDatepickerInputEvent<Date>, index, controlName) {
const d = new Date(event.value);
const day = this.datepipe.transform(d, 'yyyyMMddHHMMss');
let formName : string;
this.loadingForm.at(index).get(controlName).setValue(day);
}
这篇关于嵌套Form数组上的PatchValue的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文