【问题标题】:Angular2 custom form control prevent emitting eventAngular2自定义表单控件防止发射事件
【发布时间】:2023-04-05 16:20:01
【问题描述】:

在某些情况下,当我更新 Angular2 表单控件时,我不想触发 valueChanges 事件(例如,因为更改来自我的数据库,并且不应触发数据库写入以避免无限循环)。

这对使用“emitEvent”属性的标准 FormControl 非常有效,如下所示:

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

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

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

有没有办法做到这一点?谢谢!

【问题讨论】:

    标签: angular angular2-forms


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多