首页 > 解决方案 > 从 Angular 的控件中更新控件的有效性

问题描述

我正在 Angular 中创建一个“文件上传”组件,我想在上传期间将其标记为无效。确实,当用户选择一个文件时,它会被上传到服务器但是在那段时间里,我不希望用户能够提交表单,所以我想设置控件的有效性状态上传开始时为“无效”,上传完成时为“有效”。

我读到我可以实现该接口Validator,但在我看来,该validate方法是由 Angular 而不是我调用的,所以我无法将控件标记为我想要的无效。

标签: angularangular-reactive-forms

解决方案


我终于找到了我要找的东西。在这里发布解决方案,因为我想这对其他人来说可能很有趣。

首先,我注入Injector自定义表单控件:

constructor(private inj: Injector) {}

然后,在 中ngOnInit,我检索NgControl对表单控件的引用:

public ngOnInit() {
    this._control = this.inj.get(NgControl);
}

然后,我可以随时更新控件的有效性:

this._control.control.setErrors({ 'uploading': true });

请注意,这是一个临时验证,实际上,只要您调用onChange,Angular 就会重新检查验证,因此不会保留“上传”错误。


推荐阅读