使用CustomValueAccessor在自定义控件中重置反应形式FormControl / AbstractControl

时间:2020-02-28 10:27:40

标签: angular angular-reactive-forms

我有一个实现CustomValueAccessor的组件,该组件内部具有clear()方法来重置给定formControlName的值。在引擎盖下有<input type="file">。将其设置为@ViewChild并设置本机元素值不会反映到FormGroup。同样无法触发来自registerOnChange(fn: Function) {}的null回调。

现在,我只是将formGroup.controls.get('myControl')作为@Input()传递给自定义控件组件,并在此处进行重置。但是,有没有更好的方法来限制自定义控件组件中的控件?我还使用EventEmitter在组件外部进行操作,但希望将此逻辑一次在组件中编写。

1 个答案:

答案 0 :(得分:0)

您可以在组件内部创建FromControl并以反应方式使用它。

ts文件:

control = new FormControl();

html文件:

<input type="file" [formControl]="control">

然后,如果您想重置它,只需使用更新后的值(在您的情况下可能未定义)调用this.control.reset()propagateChange()