angular - 使用 CustomValueAccessor 在自定义控件中重置反应形式 FormControl / AbstractControl
问题描述
我有一个组件实现CustomValueAccessor
,它内部有clear()
方法来重置 given 的值formControlName
。引擎盖下有<input type="file">
. 将其设置为 a@ViewChild
并设置本机元素值不会反映到FormGroup
. 从 null 触发回调registerOnChange(fn: Function) {}
也不起作用。
现在我只是将formGroup.controls.get('myControl')
as传递@Input()
给自定义控件组件,在那里重置它。但是有没有更好的方法来控制自定义控件组件中的控件?我也曾经EventEmitter
在组件之外执行此操作,但希望在组件中编写一次此逻辑。
解决方案
您可以在组件内部创建一个FromControl
并以反应方式使用它。
ts文件:
control = new FormControl();
.html 文件:
<input type="file" [formControl]="control">
然后,如果您想重置它,您只需调用this.control.reset()
并propagateChange()
使用更新的值(在您的情况下可能未定义)
推荐阅读
- c++ - C++ 获得“第二个命令行参数”
- sql - 我想按列显示列值组的总和。如何显示?
- visual-studio-code - Search selected text in all workspace files without having to hit the enter key to actually start the search?
- javafx - JavaFXML 创建新场景
- git - Yocto throws a git Fatal Error "Please tell me who you are" after after successful Bitbake build
- android - 当外部库中抛出异常时,Android Studio 挂起
- scala - 在 Sangria 中将多个延迟值组合成一个新的延迟类型,GraphQL 实现
- php - PHP - 为什么这个有效而另一个无效
- angular - 如何让 {{ab}} 以角度工作
- java - 设置文本编辑文本