我正在寻找在formArray元素上设置最小长度验证器。
这是我创建表单的方式。
this.fb.group({
FieldName: ['', [Validators.required, Validators.pattern(/^\S*/)]],
Treatment: '',
Properties: this.fb.group(
{
contentType: this.fb.array([]),
multipleItems: false,
keyType: this.fb.group({
'Type': '',
'Prefix': '',
'Suffix': ''
}),
}
)
});
这是我正在尝试的代码。它不会被应用,并且表单完全忽略了它并变得有效。
this.fieldForm.get('Properties.contentType').setValidators([Validators.required, Validators.minLength(1)]);
答案 0 :(得分:2)
Set
是FormGroup
中控件的验证器:this.myForm.controls['controlName'].setValidators([Validators.required])
Remove
来自FormGroup
中的控件的验证者:this.myForm.controls['controlName'].clearValidators()
Update
FormGroup
一旦运行以上任一行。 this.myForm.controls['controlName'].updateValueAndValidity()
所以上下文
this.fieldForm.controls['Properties.contentType'].setValidators([Validators.required, Validators.minLength(1)]);
this.fieldForm.controls['Properties.contentType'].updateValueAndValidity()
答案 1 :(得分:1)
设置新的验证器后,您必须致电updateValueAndValidity()
this.fieldForm.get('Properties.contentType').setValidators([Validators.required, Validators.minLength(1)]);
this.fieldForm.get('Properties.contentType').updateValueAndValidity();
还要注意,它必须是this.fieldForm.get('Properties').get('contentType').setValidators([Validators.required, Validators.minLength(1)]);
因为您有Properties
控件的子表单组。