我有一个非常大的表单,其中许多部分表示为单独的表单组。在每个部分的末尾,我有一个检查按钮,用于检查该表单组中所有控件的有效性,到目前为止,它如下所示
checkValidity(g: FormGroup) {
Object.keys(g.controls).forEach(key => {
g.get(key).markAsDirty();
});
Object.keys(g.controls).forEach(key => {
g.get(key).markAsTouched();
});
}
它运行正常,但是因为我的通用验证器检查并处理每个控件上的验证消息'输入模糊事件,验证消息本身不会弹出,直到我对焦并模糊控件。所以我想在上面的方法中添加一些东西,在表单组中的每个Form控件上触发一个blur事件,但我还没有弄清楚我会怎么做。
的document.getElementById(" myAnchor&#34)。模糊();来自W3Schools显示我如何通过id获取元素并以此方式触发它的模糊()。使用上面的方法,我是否能够使用forEach访问FormGroup中的所有元素以触发所有内容的模糊? (输入,textareas,单选按钮和复选框)
请知道。
答案 0 :(得分:2)
我刚刚想出了解决这个问题的方法,它不涉及触发模糊或任何DOM事件。在发现上一个问题的updateValueAndValidity()后,我在表单组中的每个控件上调用它,就像我将所有控件标记为脏并触及问题一样。演示如下。
checkValidity(g: FormGroup) {
Object.keys(g.controls).forEach(key => {
g.get(key).markAsDirty();
});
Object.keys(g.controls).forEach(key => {
g.get(key).markAsTouched();
});
Object.keys(g.controls).forEach(key => {
g.get(key).updateValueAndValidity();
});
}
这会在表单组中的每个控件下正确显示验证错误消息,之前我必须对焦,然后在任何控件上模糊以实现此目的。