我正在使用动态表单控件来创建动态字段
通过使用https://www.c-sharpcorner.com/blogs/creating-form-controls-dynamically-in-angular-7-project的引用
我想在Angular 6中使用setValidators
和updateValueAndValidity
验证动态字段。
下面是我使用过的语法,但是它不起作用。
(<FormArray>this.addQuestionForm.get('other')).setValidators([Validators.required]);
(<FormArray>this.addQuestionForm.get('other')).updateValueAndValidity();
还要让我知道如何删除引用为“ <FormArray>this.addQuestionForm.get('other')
”的动态添加的字段
谢谢
答案 0 :(得分:1)
您必须在(this.addQuestionForm.get('other'))的每个控件上循环并在每个组件上应用验证
(<FormArray>this.addQuestionForm.get('other')).controls.forEach((control) => {
control.setValidators([Validators.required]);
control.updateValueAndValidity();
});
如果要删除formArray中动态添加的字段,则必须获取要删除的元素的索引
由于FormArray类具有removeAt,它接受索引。如果您不知道索引,则可以采取解决方法:
this.addQuestionForm.get('other').removeAt(index);
答案 1 :(得分:0)
我认为这里的问题是在FormArray
上设置必需的验证。因为在JavaScript中,空数组也是正确的。
您可以做的是在minLength
字段上设置FormArray
验证。
让我知道这是否可行。