【发布时间】:2019-05-28 14:07:28
【问题描述】:
我正在创建一个带有角材料垫表的表格。
我在编写应用程序时使用了响应式表单,表单启动看起来像这样:
myForm = this.fb.group({
settings: this.fb.array([])
});
我的表单是一个 formGroup,其中包含一个 formArray 控件(设置)。
设置 formArray 包含每个设置的 formGroup(mat-table 中的每一行都是一个 formGroup 并包含多个控件)。
当我尝试向它添加验证时,我的问题就开始了。
如果我只有一个带有 formControl 的 formGroup,其中一个是 Validators.required,例如,在我添加一些值之前,表单是无效的,然后它会变为有效状态。
但是,在表单数组中使用 formGroup 时,即使在 require 字段中添加了一些值,表单状态仍然无效(我什至控制台记录表单以查看内部值是否已更改并且确实如此)。
此外,当我尝试使用 valueChange().subscribe... 捕获更改时,该事件仅在我从 formArray 推送/删除组时触发,并且从不会在设置组内的现有控件发生更改时触发。
如何在数组内的组中侦听内部更改事件,然后对它们使用一些自定义估值?
【问题讨论】:
-
澄清一下,您有一个带有 FormArray 子级的顶级 FormGroup,其中数组中的每个项目都是 FormControls 的 FormGroup?
-
是的,我这样做是因为表单将包含其他数据,并且表格中的每一行(formArray 中的元素)包含字段数
标签: angular angular-reactive-forms angular-validation