angular - 如何验证 angular2 中的 FormArray 长度

标签 angular angular2-forms

我在 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/

相关文章:

javascript - Angular 不会自动显示我的字符串数组中的更改

angular - 如何在ngrx Angular2中将数据从父路由传递到子路由

angular - 模型驱动/ react 形式 : Auto mapping from Model to FormGroup ?

Angular + redux/ngrx : state update vs. 形式

angular - 如何禁用/抑制 TypeScript 库中的错误?

angular - Angular 单文件组件支持 sass/scss 吗?

angular - 在没有 ReactiveForm 的情况下使用 Angular Material mat-autocomplete

angular - 什么是 updateValueAndValidity

angular2 复选框表单控件

angular2-template - Angular2 Form 使用 setValue 将值重置为 null