嵌套 FormArray 上的 PatchValue
PatchValue on a nested FormArray
我的这个表单有一个包含日期值的嵌套表单数组。当用户选择一个日期时,将调用一个函数来格式化日期并更新表单的值。
但是,我很难理解如何访问数组中的特定表单控件......
这是相关代码
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);
但是,显然,这是错误的...
有人可以帮忙吗?
FormArray 方法有 at 方法来访问特定控件,使用它来设置值。
试试这个:
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);
}
我的这个表单有一个包含日期值的嵌套表单数组。当用户选择一个日期时,将调用一个函数来格式化日期并更新表单的值。 但是,我很难理解如何访问数组中的特定表单控件...... 这是相关代码
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);
但是,显然,这是错误的... 有人可以帮忙吗?
FormArray 方法有 at 方法来访问特定控件,使用它来设置值。
试试这个:
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);
}