angular - 从 Angular 的控件中更新控件的有效性
问题描述
我正在 Angular 中创建一个“文件上传”组件,我想在上传期间将其标记为无效。确实,当用户选择一个文件时,它会被上传到服务器但是在那段时间里,我不希望用户能够提交表单,所以我想设置控件的有效性状态上传开始时为“无效”,上传完成时为“有效”。
我读到我可以实现该接口Validator
,但在我看来,该validate
方法是由 Angular 而不是我调用的,所以我无法将控件标记为我想要的无效。
解决方案
我终于找到了我要找的东西。在这里发布解决方案,因为我想这对其他人来说可能很有趣。
首先,我注入Injector
自定义表单控件:
constructor(private inj: Injector) {}
然后,在 中ngOnInit
,我检索NgControl
对表单控件的引用:
public ngOnInit() {
this._control = this.inj.get(NgControl);
}
然后,我可以随时更新控件的有效性:
this._control.control.setErrors({ 'uploading': true });
请注意,这是一个临时验证,实际上,只要您调用onChange
,Angular 就会重新检查验证,因此不会保留“上传”错误。
推荐阅读
- python - 如何将没有双引号元素的列表的字符串表示形式转换为实际列表?
- mysql - 你如何在 MYSQL 外键中获取数据?
- google-apps-script - 通过 Google Apps 脚本仅输入一次数据后锁定单元格
- php - 是否可以在注释中使用 CONST 或服务全局作为参数?
- graph - 在 Gremlin 中以原子方式添加两个顶点和一条边的最佳方法
- reactjs - 控制值时如何使用反应测试库将文本输入formik?
- json - jq select()返回false时如何使用回退值
- javascript - js 使用“责任链模式”,但导出后,所有外部调用都是空的
- python - Python 3 中的程序化导入?
- c# - 如何创建包含一个字符串变量和三个 int 变量的字典