【发布时间】:2019-08-14 03:48:16
【问题描述】:
我正在使用以下JSON 设置dynamic form validation。基于这些JSON,我使用以下JSON 格式创建了动态表单字段。
fields = [
{
type: 'text',
name: 'firstName',
label: 'First Name',
value: '',
required: true,
},
{
type: 'checkbox',
name: 'hobby',
label: 'Hobby',
required: true,
options: [
{ key: 'f', label: 'Fishing' },
{ key: 'c', label: 'Cooking' }
]
}
]
我的commponent.ts 文件正在关注
form: FormGroup;
ngOnInit() {
let fieldsCtrls = {};
for (let f of this.fields) {
if (f.type != 'checkbox') {
fieldsCtrls[f.name] = new FormControl(f.value || '',
Validators.required)
} else {
let opts = {};
for (let opt of f.options) {
opts[opt.key] = new FormControl(opt.value);
}
fieldsCtrls[f.name] = new FormGroup(opts)
}
}
this.form = new FormGroup(fieldsCtrls);
}
我已为所有输入字段应用required 验证,不包括checkbox。
如何在此代码中为复选框应用所需的验证?
【问题讨论】:
-
你可以在
opts[opt.key] = new FormControl(opt.value);之后使用setValidators([Validators.required])。或者你可以使用前面的命令new FormControl(opt.value, Validators.required) -
你还需要在FormControl上使用
updateValueAndValidity() -
您首先必须向我们解释需要复选框的含义。选项为 false 且未选中复选框,或者为 true 且选中复选框。需要是什么意思?
-
当
required:true时需要选中1个复选框 -
您好 Niladri 我无法理解您的建议。我想如果我尝试过这个,那么它会为每个复选框应用验证。我只想在提交表单时至少选中 1 个复选框
标签: angular