我在 angular2 中有一个数据驱动的表单,如下所示
this.formBuilder.group({
'name': ['',Validators.required],
'description': ['', Validators.required],
'places': this.formBuilder.array([], Validators.minlength(1))
})
我想将验证添加到 place
formArray,因此我添加了 minlength
验证,但 minlength 验证不适用于 formArray。
formArray 的其他验证是什么,以便只有当 places 数组至少包含一个位置时,该表单才有效。
最佳答案
Validators.required
为您施展魔法:
// using required
this.formGroup = this.formBuilder.group({
taskTreeId: [Common.UID()],
executionProgrammedTime: ["", [Validators.required]],
description: [""],
tasks: this.formBuilder.array([], Validators.required)
});
// using custom validation
export const minLengthArray = (min: number) => {
return (c: AbstractControl): {[key: string]: any} => {
if (c.value.length >= min)
return null;
return { MinLengthArray: true};
}
}
this.formGroup = this.formBuilder.group({
taskTreeId: [Common.UID()],
executionProgrammedTime: ["", [Validators.required]],
description: [""],
tasks: this.formBuilder.array([], minLengthArray(2))
});
<button type="button" class="btn btn-success btn-rounded"
[disabled]="!formGroup.valid">SAVE</button>
关于angular - 如何验证 angular2 中的 FormArray 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184800/