Angular2自定义表单控件防止发射事件
Posted
技术标签:
【中文标题】Angular2自定义表单控件防止发射事件【英文标题】:Angular2 custom form control prevent emitting event 【发布时间】:2017-06-24 23:40:12 【问题描述】:在某些情况下,当我更新 Angular2 表单控件时,我不想触发 valueChanges 事件(例如,因为更改来自我的数据库,并且不应触发数据库写入以避免无限循环)。
这对使用“emitEvent”属性的标准 FormControl 非常有效,如下所示:
this.form.formGroup.controls[name].setValue(value, emitEvent: false);
现在我有一个案例,我想在我创建的自定义 FormControl 上使用该“功能”,通过 registerOnChange()
和 writeValue()
方法实现“ControlValueAccessor”。
但我不知道如何访问 emitEvent 属性,因为它不是 writeValue()
中的传入参数
有没有办法做到这一点?谢谢!
【问题讨论】:
【参考方案1】:这不是它的工作原理,writeValue
是 Angular 用来更新您的自定义组件的,而不是相反。控件使用传递给registerOnChange
的函数进行更新,但是这是用于通过组件的 UI 更新值,如果不发出事件就无法完成,实际上没有这种情况。如果您详细说明您的情况,我们可以尝试解决。如果你想防止额外的保存请求,你可以添加去抖动机制或使用 Angular FormHooks——'blur'
只会在你离开 UI 元素后更新控件。
【讨论】:
以上是关于Angular2自定义表单控件防止发射事件的主要内容,如果未能解决你的问题,请参考以下文章