使用setValidators验证动态字段

时间:2019-08-12 08:34:01

标签: angular validation

我正在使用动态表单控件来创建动态字段 通过使用https://www.c-sharpcorner.com/blogs/creating-form-controls-dynamically-in-angular-7-project的引用 我想在Angular 6中使用setValidatorsupdateValueAndValidity验证动态字段。

下面是我使用过的语法,但是它不起作用。

(<FormArray>this.addQuestionForm.get('other')).setValidators([Validators.required]);
(<FormArray>this.addQuestionForm.get('other')).updateValueAndValidity();

还要让我知道如何删除引用为“ <FormArray>this.addQuestionForm.get('other')”的动态添加的字段

谢谢

2 个答案:

答案 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验证。

让我知道这是否可行。