angular - Angular 7. 第一次不要检查反应形式的验证
问题描述
在 Angular 7 中,我有以下代码:
this.formGroup = this.formBuilder.group({
id: [],
name: ['', [Validators.required], this.validateSomething.bind(this)],
});
然后我做了一些事情,最后我用从我的数据库获得的对象初始化值,myObject
我知道它不会破坏任何验证:
this.formGroup.setValue({
id: myObject.id,
name: myObject.name
}, {
emitEvent: false
});
我validateSomething
的非常复杂,我希望这样,在我最初的setValue
时候它没有运行以节省一些计算。
我找到了这个功能setValidators()
,我想我可以做类似的事情:
- 第一的:
this.formGroup = this.formBuilder.group({
id: [],
name: ['', [Validators.required]],
});
- 然后:
this.formGroup.setValue({
id: myObject.id,
name: myObject.name
}, {
emitEvent: false
});
- 就在之后:
this.formGroup.controls.name.setValidator(validateSomething.bind(this));
但它不起作用。验证根本不再起作用。
任何的想法?谢谢!
解决方案
在您的验证方法validateSomething
中,您可以检查该字段是否是touched
和/或dirty
在验证之前。
就像是:
this.myForm.get('name').touched && this.myForm.get('name').dirty
.
推荐阅读
- python - Firestore 云侦听器,不适用于集合内的集合
- r - 根据 PCA 中的名称对行进行子集化
- local - 尝试在本地加载时出现 google-font 问题
- python - 需要从列表中的列表中添加多个值(IndexError:列表索引超出范围)
- python-3.x - Python(New)为什么这个函数不打印分配给它的新变量?
- c++ - 模板类友元函数的内部类
- excel - 我无法使用按字母排序的公式?
- azure-service-fabric - 使用 VS 2019 针对远程本地集群调试 Service Fabric 应用程序
- git - 如何将存储库与后端合并到前端?
- android - 混合应用程序。相机打不开拍照