0

我在自己的原始组件中实现了 ControlValueAccessor。你看到它的代码: 那里(plunker)

在父组件中,我使用我的 with ng-if 指令。我可以通过复选框隐藏和显示我的组件。组件每次初始化和销毁​​,但 writeValue 函数调用了很多次。请在 plunker 检查我的代码

为什么会这样?我该如何解决这个问题?

4

1 回答 1

0

您需要重新创建控件:

  resetValue() {
    this.name = new FormControl('initial');
    this.name.setValue('has been reset');
  }

正如@Сергей所说,原因是每次创建ControlValueAccessor组件时,它都会在formControl的私有属性中注册其回调函数(例如,_onChange)。这是一个数组,它累积了这些函数。解决方案之一是创建新的 FormControl。

于 2018-01-20T21:23:40.647 回答