首页 > 解决方案 > 使用 CustomValueAccessor 在自定义控件中重置反应形式 FormControl / AbstractControl

问题描述

我有一个组件实现CustomValueAccessor,它内部有clear()方法来重置 given 的值formControlName。引擎盖下有<input type="file">. 将其设置为 a@ViewChild并设置本机元素值不会反映到FormGroup. 从 null 触发回调registerOnChange(fn: Function) {}也不起作用。

现在我只是将formGroup.controls.get('myControl')as传递@Input()给自定义控件组件,在那里重置它。但是有没有更好的方法来控制自定义控件组件中的控件?我也曾经EventEmitter在组件之外执行此操作,但希望在组件中编写一次此逻辑。

标签: angularangular-reactive-forms

解决方案


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

ts文件:

control = new FormControl();

.html 文件:

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

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


推荐阅读