Angular 如何在表单数组中添加无效的表单控件而不影响其功能性

Angular 如何在表单数组中添加无效的表单控件而不影响其功能性,angular,angular2-forms,Angular,Angular2 Forms,我想创建一个动态表单,将表单控件(必需的表单控件)添加到表单数组中 表单控件无效,因为它需要用户填写(为空) 但是当我添加表单控件时,我得到了一个错误 ExpressionChangedTerithasBeenCheckedError:表达式在检查后已更改。上一个值:“ng valid:true”。当前值:“ng有效:false” 在控制台中 add(formControl) { (this.formGroup.get('array') asFormArray).push(formCon

我想创建一个动态表单,将表单控件(必需的表单控件)添加到表单数组中

表单控件无效,因为它需要用户填写(为空)

但是当我添加表单控件时,我得到了一个错误

ExpressionChangedTerithasBeenCheckedError:表达式在检查后已更改。上一个值:“ng valid:true”。当前值:“ng有效:false”

在控制台中

add(formControl) {
    (this.formGroup.get('array') asFormArray).push(formControl)
}

添加无效子表单后,只需手动调用更改检测。更改检测自上而下工作。根据该错误判断,当按钮单击(或用于添加新表单的任何内容)的更改检测周期运行时,它在到达新添加的无效子表单时已经检查了表单的有效性。在添加新表单后手动调用它会告诉Angular需要第二个更改检测周期,因为更高级别元素中的表达式很可能已更改

constructor(private readonly cdr: ChangeDetectorRef) {}

add(formControl) {
  (this.formGroup.get('array') asFormArray).push(formControl);
  this.cdr.detectChanges();
}