如何禁用所有表单控件的emitEvent

时间:2017-10-11 07:40:13

标签: forms angular

有没有办法将emitEvent设置为false给所有表单控件?

目前,当我们patchValue或setValue时,可以传递选项以不抛出表单的valueChanges:

form.get['myControlName'].setValue('newValue', {emitEvent:false})
form.get['myControlName'].patchValue('newValue', {emitEvent:false})

但是如果我们有很多patchValue或setValue,它有点重复......我有办法在之前禁用emitEvent,更改所有值并在之后再次激活它吗?

1 个答案:

答案 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});
}

希望它有所帮助:)