从api调用中动态创建Angular Reactive形式的复选框,可以通过以下步骤实现:
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
import { ApiService } from 'your-api-service'; // 替换为你的API服务
@Component({
selector: 'app-your-component',
templateUrl: './your-component.component.html',
styleUrls: ['./your-component.component.css']
})
export class YourComponent implements OnInit {
form: FormGroup;
checkboxes: any[]; // 存储复选框选项的数组
constructor(private formBuilder: FormBuilder, private apiService: ApiService) { }
ngOnInit() {
this.form = this.formBuilder.group({
checkboxes: this.formBuilder.array([]) // 使用FormBuilder创建一个空的FormArray
});
this.apiService.getCheckboxes().subscribe(data => {
this.checkboxes = data; // 从API调用中获取复选框选项的数据
this.addCheckboxes(); // 调用addCheckboxes方法动态创建复选框
});
}
addCheckboxes() {
this.checkboxes.forEach((checkbox) => {
const control = this.formBuilder.control(false); // 使用FormBuilder创建一个复选框控件
(this.form.controls.checkboxes as FormArray).push(control); // 将复选框控件添加到FormArray中
});
}
submit() {
const selectedCheckboxes = this.form.value.checkboxes
.map((checked, i) => checked ? this.checkboxes[i] : null)
.filter(value => value !== null);
console.log(selectedCheckboxes); // 打印选中的复选框选项
}
}
<form [formGroup]="form" (ngSubmit)="submit()">
<div formArrayName="checkboxes">
<div *ngFor="let checkbox of form.controls.checkboxes.controls; let i = index">
<label>
<input type="checkbox" [formControlName]="i">
{{ checkboxes[i].label }}
</label>
</div>
</div>
<button type="submit">提交</button>
</form>
以上代码假设你已经创建了一个名为ApiService
的服务来处理API调用,并且该服务具有一个名为getCheckboxes()
的方法,用于从API获取复选框选项的数据。
请注意,这只是一个示例,你需要根据你的实际需求进行适当的修改和调整。另外,由于你要求不提及特定的云计算品牌商,所以无法提供与腾讯云相关的产品和链接。
领取专属 10元无门槛券
手把手带您无忧上云