有没有办法将emitEvent设置为false给所有表单控件?
目前,当我们patchValue或setValue时,可以传递选项以不抛出表单的valueChanges:
form.get['myControlName'].setValue('newValue', {emitEvent:false})
form.get['myControlName'].patchValue('newValue', {emitEvent:false})
但是如果我们有很多patchValue或setValue,它有点重复......我有办法在之前禁用emitEvent,更改所有值并在之后再次激活它吗?
答案 0 :(得分:1)
您可以使用这样的简单解决方案:
迭代您表单的所有控件并重置其值并将emitEvent
设置为false
:
//the "manual" solution :
form.controls['name'].setValue('nameNewValue', {emitEvent:false});
form.controls['address'].setValue('addressNewValue', {emitEvent:false});
// the "dynamic" solution
for(let control in form.controls){
form.controls[control].setValue(form.controls[control].value, {emitEvent:false});
}
希望它有所帮助:)