Angular响应式表单中markAllAsTouched()的异常行为
创始人
2024-10-30 08:00:44
0

在Angular的响应式表单中,markAllAsTouched()方法被用来将所有表单控件设置为触摸状态,并触发校验。然而,在某些情况下,该方法可能会出现异常行为,例如在删除动态表单行之后调用该方法,它可能会将所有控件标记为触摸并未通过校验,即使它们已经被删除。

为了解决这个问题,我们可以手动递归遍历表单的控件,并设置它们为触摸状态和触发校验,以避免调用markAllAsTouched()方法。

以下是一个示例代码,用于手动递归遍历表单:

/**
* Marks all controls in a form group as touched and triggered validation
*/
export function markFormGroupTouched(formGroup: FormGroup) {
 Object.values(formGroup.controls).forEach(control => {
   control.markAsTouched();
 
   if (control instanceof FormGroup) {
     markFormGroupTouched(control);
   }
 });
}

我们可以将这个函数用于表单组中的任何表单控件上,以手动标记它们为触摸和触发校验。例如,

this.addressForm = this.fb.group({
   street: [],
   city: [],
   state: [],
   zip: []
 });

markFormGroupTouched(this.addressForm);

使用上述代码示例,我们可以避免markAllAsTouched()方法的异常行为。

相关内容

热门资讯

8分钟辅助!wepoker辅助... 8分钟辅助!wepoker辅助真的假的,wpk真吗,阶段教程(有挂方针)8分钟辅助!wepoker辅...
第2分钟辅助!德普之星透视辅助... 第2分钟辅助!德普之星透视辅助软件,wpk官网下载链接,资料教程(有挂秘籍)1、点击下载安装,德普之...
第一分钟辅助!拱趴大菠萝开挂方... 第一分钟辅助!拱趴大菠萝开挂方法,竞技联盟透视插件,方针教程(存在有挂)拱趴大菠萝开挂方法辅助器是一...
第一分钟辅助!德州透视插件,h... 第一分钟辅助!德州透视插件,hardrock作弊,总结教程(有挂方针)德州透视插件是不是有人用挂微扑...
四分钟辅助!wepoker看底... 四分钟辅助!wepoker看底牌,wejoker透视方法,指南教程(有挂辅助)1、wejoker透视...
四分钟辅助!wpk辅助哪里买,... 四分钟辅助!wpk辅助哪里买,如何下载德普之星辅助软件,指引教程(发现有挂)1、游戏颠覆性的策略玩法...
七分钟辅助!大菠萝免费辅助器,... 七分钟辅助!大菠萝免费辅助器,wepoker轻量版有透视吗,策略教程(确实有挂)1、打开软件启动之后...
六分钟辅助!哈糖大菠萝挂,we... 六分钟辅助!哈糖大菠萝挂,wepokerplus辅助,阶段教程(存在有挂)1、金币登录送、破产送、升...
第八分钟辅助!cloudpok... 第八分钟辅助!cloudpoker怎么开挂,哈糖大菠萝可以开挂吗,秘籍教程(有挂规律)所有人都在同一...
7分钟辅助!hhpoker德州... 7分钟辅助!hhpoker德州作弊,拱趴大菠萝万能挂,指南教程(有挂解惑)1、游戏颠覆性的策略玩法,...