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

Ste*_*fel 9 angular2-forms angular

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

这对于使用"emitEvent"属性的标准FormControls非常有用,如下所示:

this.form.formGroup.controls[name].setValue(value, {emitEvent: false});
Run Code Online (Sandbox Code Playgroud)

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

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

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

wat*_*lea 1

这不是它的工作原理,writeValue而是 Angular 用来更新自定义组件的方式,而不是相反。控件使用传递给 的函数进行更新registerOnChange,但是这是为了通过组件的 UI 更新值,如果不发出事件就无法完成,而且实际上没有这种情况。如果您详细说明您的情况,我们可以尝试解决这个问题。如果你想防止额外的保存请求,你可以添加去抖机制或使用 Angular FormHooks \xe2\x80\x94'blur'只会在你离开 UI 元素后更新控件。

\n