有没有一种办法,即所提供的反应式表格的所有验证者都可以在提交时触发,而不仅仅是通过“肮脏”和“触摸”事件?
原因是我们有一个非常大的形式,不表示是否需要一个字段,用户可能会错过一些所需的控制,所以在提交时,预计所有无效的字段都被错过由最终用户将显示.
我已经尝试使用该表格作为“触摸”
FormGroup.markAsTouched(true);
它的工作,所以我也尝试标记为“脏”
FormGroup.markAsDirty(true);
但是班级的css仍然是“原始的”,
有没有办法从组件手动触发,我尝试谷歌没有用,谢谢你提前!
UPDATE
我已经通过迭代FormGroup.controls并将其标记为“脏”,使其工作,但是有一个“标准”的方式来做到这一点.
解决方法
我今天没有找到一个标准的方法(角4.0.0),所以我受到OP(markAsDirty递归)提到的解决方案的启发,并在这里分享记录:
let markAsDirty = function(group: FormGroup | FormArray) { group.markAsDirty() for (let i in group.controls) { if (group.controls[i] instanceof FormControl) { group.controls[i].markAsDirty(); } else { markAsDirty(group.controls[i]); } } }
希望会有用!