在某些情况下,当我更新Angular2 Form控件时,我不想触发valueChanges事件(例如,因为更改是从我的数据库反应而不应该触发数据库写入以避免无限循环)。
这对于使用“emitEvent”属性的标准FormControls非常有用,如下所示:
this.form.formGroup.controls[name].setValue(value, {emitEvent: false});
现在我有一个案例,我想在自定义FormControl上使用该“功能”,我用它的registerOnChange()
和writeValue()
方法实现了“ControlValueAccessor”。
但我不知道如何访问emitEvent属性,因为它不是writeValue()
中的传入参数
有没有办法实现这一目标?谢谢!
这不是它的工作原理,writeValue
是Angular用于更新自定义组件的方式,而不是相反。使用传递给registerOnChange
的函数更新控件,但是这是通过组件的UI更新值,如果没有发出事件就无法完成,实际上没有这种情况。如果您详细了解您的情况,我们可以尝试解决。如果要防止额外的保存请求,可以添加去抖动机制或使用Angular FormHooks - 'blur'
只有在离开UI元素后才会更新控件。