Angular2自定义表单控件可防止发出事件

时间:2017-02-07 16:14:48

标签: angular angular2-forms

在某些情况下,当我更新Angular2 Form控件时,我不想触发valueChanges事件(例如,因为更改是从我的数据库反应而不应该触发数据库写入以避免无限循环)。

对于使用“emitEvent”属性的标准FormControl,这很好用,如下所示:

this.form.formGroup.controls[name].setValue(value, {emitEvent: false});

现在我有一个案例,我想在自定义FormControl上使用该“功能”,我使用registerOnChange()writeValue()方法创建了“ControlValueAccessor”。

但我不知道如何访问emitEvent属性,因为它不是writeValue()

中的传入参数

有没有办法实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:0)

这不是它的工作方式,writeValue是Angular用于更新自定义组件的工具,而不是相反的方法。控件使用传递给registerOnChange的函数进行更新,但是,这是通过组件的UI更新值,如果不发出事件就无法完成更新,实际上没有任何理由。如果您更多地了解您的情况,我们可以尝试解决。如果要阻止额外的保存请求,则可以添加防反射机制或使用Angular FormHooks-'blur'仅在离开UI元素后才会更新控件。