【发布时间】:2019-06-21 15:19:42
【问题描述】:
我想对我的复选框 FormBuilder.array 实施验证,但尽管选中了其中一个框,表单仍然无效。
我尝试了Validators.required 和Validators.requiredTrue,但仍然无法按预期工作
TS:
this.Form = this.fb.group({
stage: this.fb.array([], Validators.required)
})
HTML:
<div class="form-check-label">
<label class="checkbox-inline">
<input type="checkbox" class="checkbox" name="none" value="1" #noneChk
(change)="onCheckArray($event, Form.value.stage)">
Stage 1
</label>
</div>
<div class="form-check-label">
<label class="checkbox-inline">
<input type="checkbox" class="checkbox" name="self" value="2" #selfChk
(change)="onCheckArray($event, Form.value.stage)">
Stage 2
</label>
</div>
<p>{{ this.Form.valid | json }}</p>
我有我的 StackBlitz here
【问题讨论】:
-
Mhfour,Validators.required 在 formArray 中不起作用,因为 FormArray 的值始终是“某物”-一个数组-。您需要制作一个自定义验证器来检查是否检查了 formArray 的一个元素
-
要理解一个复选框,请检查stackblitz的这个问题。 stackoverflow.com/questions/56619632/…。注意:如果您想使用自定义表单控件,但不想使用材质,只需将复选框列表组件中的
<mat-checkbox [formControl]="check">{{key?_data[i][text]:_data[i]}}</mat-checkbox>替换为<label><input type="checkbox" [formControl]="check">{{key?_data[i][text]:_data[i]}}</label> -
是否有自定义验证的示例?我尝试了一些,但没有成功
-
我添加了一个答案来制作自定义验证器。
标签: angular typescript