【发布时间】:2018-09-06 05:16:37
【问题描述】:
我正在使用响应式表单 FormGroup、FormBuilder 和 FormArray。我有一个 FormArray,我想在其中循环一个外部数组,创建一个复选框列表,然后将这些复选框的 id 传递给我的 FormArray。
我的组件打字稿看起来像:
export class AppComponent {
form: FormGroup;
sites = [ "site-1", "site-2", "site-3", "site-4" ];
constructor(private fb: FormBuilder){
}
ngOnInit() {
this.form = this.fb.group({
type: [ '', Validators.required ],
sites: this.fb.array([
this.fb.group({
siteId: [ '', Validators.required ]
})
])
})
}
}
还有我的html...
<form [formGroup]="form">
<input type="checkbox" formControlName="type" id="type">
<label for="type">Type</label>
<div class="checkbox-group" style="margin-top:40px">
<div class="checkbox-wrap" id="productsContainer">
<input type="checkbox" id="all">
<label for="all">All mills</label>
<div *ngFor="let site of sites; let i = index">
<input type="checkbox" [id]="i" />
<label [for]="i"> {{ site }} </label>
</div>
</div>
</div>
</form>
我知道我需要将 formArrayName 传递到 html 中,但在尝试传递 formArrayName="sites" 然后使用循环中的“i”作为 formGroupName 时出现控制台错误。我做错了什么?
这是一个完整设置的 StackBlitz...
https://stackblitz.com/edit/angular-rcfnwi?file=app%2Fapp.component.html
【问题讨论】:
-
这对你有用吗? stackblitz.com/edit/angular-sgijvp?file=app%2Fapp.component.ts 这里没有考虑
all选项,但这也不在你的问题中:P:P -
是的,非常完美,谢谢!
标签: arrays angular typescript angular5 angular-reactive-forms