我有这样的东西
let formGroup = new FormGroup({
operationalAM: new FormGroup({
endTime: new FormControl('')
}),
operationalPM: new FormGroup({
startTime: new FormControl('')
})
});
我试图像这样将值设置为 endTime 和 startTime
formGroup.controls.operationalAM.value.endTime.setValue('1300');
formGroup.controls.operationalPM.value.startTime.setValue('');
但是我有错误
TypeError:formGroup.controls.operationalAM.value.endTime.setValue不是函数
有人知道如何在formGroup内为formGroup设置值吗?
答案 0 :(得分:3)
您可以在像这样的控件中设置值:
formGroup.controls.get('operationalAM').setValue({ endTime: '1300' });
formGroup.controls.get('operationalPM').setValue({ startTime: '1300' });
您可以使用works like中的patchValue:
使用patchValue()方法来替换对象中定义的属性,这些属性在表单模型中已更改。
formGroup.controls.get('operationalAM').patchValue({ endTime: '1300' });
这样,您可以保留引用,但仅更新endTime
的值
答案 1 :(得分:1)
应该是
formGroup.controls.operationalAM.controls.endTime.setValue('1300');
formGroup.controls.operationalPM.controls.startTime.setValue('');
答案 2 :(得分:0)
由于在另一个formGroup中有formGroup,因此您必须在内部formGroup中引用控件
formGroup.controls.get('operationalAM.startTime').setValue('1300');
formGroup.controls.get('operationalPM.endTime').setValue('');
第二种方法是使用getter
喜欢
get startTime(){
return this.yourform.get('operationalAM.startTime')
}
get endTime(){
return this.yourform.get('operationalPM.endtime')
}
这将返回控件,然后您可以为
之类的控件设置值this.yourform.get('endtime').setValue(value);
答案 3 :(得分:0)
您还可以如下使用patchValue方法:
formGroup.patchValue({
operationalAM: ({
endTime:'1'
}),
operationalPM:({
startTime:'2'
})
});
您无需在此处指定所有字段,只需指定您需要的字段
来源:此Question