Angular 多个复选框以动态反应形式显示在角度
我有一个场景,其中配置来自服务器,这意味着表单是由来自服务器的配置生成的;与输入类型、标签等类似,文本字段、复选框、选择选项和单选按钮也是由服务器响应动态生成的 但是,当复选框有多个值(例如:js、PHP、python)时,我无法正确地得到它。因为我已经在一个循环中创建了Angular 多个复选框以动态反应形式显示在角度,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我有一个场景,其中配置来自服务器,这意味着表单是由来自服务器的配置生成的;与输入类型、标签等类似,文本字段、复选框、选择选项和单选按钮也是由服务器响应动态生成的 但是,当复选框有多个值(例如:js、PHP、python)时,我无法正确地得到它。因为我已经在一个循环中创建了formControl,所以不管checkbox中有多少个选项,我总是从checkbox form control获得一个输出。 我试过formArray,但没有得到我想要的结果 // ts const group =
formControl
,所以不管checkbox中有多少个选项,我总是从checkbox form control获得一个输出。
我试过formArray
,但没有得到我想要的结果
// ts
const group = {};
this.category.header.forEach(input => {
group[input.id] = new FormControl('');
});
this.myFormGroup = new FormGroup(group);
// html
<form [formGroup]="myFormGroup" (ngSubmit)="onSubmit()">
<div *ngFor="let form_elem of category.header">
<div [ngSwitch]="form_elem.type">
<div *ngSwitchCase="'text'">
<input type="text" formControlName="{{form_elem.id}}"/>
</div>
<div *ngSwitchCase="'radio'">
<div *ngFor="let item of form_elem.options">
<input type="radio" [value]='item' formControlName="{{form_elem.id}}" >
</div>
</div>
<div *ngSwitchCase="'select'">
<select formControlName="{{form_elem.label}}">
<option *ngFor="let opt of form_elem.options">
{{opt}}
</option>
</select>
</div>
<div *ngSwitchCase="'checkbox'">
<div *ngFor="let item of form_elem.options">
<input type="checkbox" [value]='item' formControlName="{{form_elem.id}}">
</div>
</div>
</div>
</div>
<input type="submit" value="save"/>
</form>
//ts
常量组={};
this.category.header.forEach(输入=>{
组[input.id]=新表单控件(“”);
});
this.myFormGroup=新表单组(组);
//html
{{opt}}
我希望我的checkbox属性是这样的
复选框:
[{option1:true},{option2:false}]
您可以尝试这些方法,但您需要在某处检查复选框的条件
this.category.header.forEach(input => {
if(input.type == 'checkbox'){
let opts = {};
for (let opt of input.options) {
opts[opt.key] = new FormControl(opt.value);
}
group[input.id] = new FormGroup(opts)
}else{
group[input.id] = new FormControl('');
}
});
您可以尝试这些方法,但您需要在某处选中复选框的条件
this.category.header.forEach(input => {
if(input.type == 'checkbox'){
let opts = {};
for (let opt of input.options) {
opts[opt.key] = new FormControl(opt.value);
}
group[input.id] = new FormGroup(opts)
}else{
group[input.id] = new FormControl('');
}
});
@kuklyy this.category.header是一个对象数组,例如,这个数组的一个元素如下:{id:“some_id”,label:“input_label”选项:['js',php',node']type:“checkbox”}你能添加一个最小的复制示例吗?在stackblitz或…@kuklyy this.category.header上是一个对象数组,例如,该数组的一个元素如下:{id:“some_id”,label:“input_label”选项:['js',php',node']type:“checkbox”}您能添加一个最小的复制示例吗?关于闪电战或。。。