作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 Angular 2 响应式表单,其中包含数据绑定(bind)的复选框列表。这工作正常,但现在我需要添加一个按钮来检查所有复选框。
下面是我的 FormGroup 的配置方式:
private buildForm() {
this.groupForm = this._formBuilder.group({
bookId: this._formBuilder.control(null),
startDate: this._formBuilder.control(null),
groupTotal: this._formBuilder.control(null),
chapterGrouping: this._formBuilder.control("all"),
groupChapters: this.buildChapters()
});
}
private buildChapters() {
const chapters = this.chapters.map(chapter => {
return this._formBuilder.control(chapter.selected)
});
return this._formBuilder.array(chapters);
}
这是我的 HTML:
<div class="form-group">
<label for="">Select chapters</label>
<div *ngFor="let chapter of formChapters.controls; let i=index" class="checkbox">
<label>
<input type="checkbox" [formControl]="chapter" >
{{chapters[i].title}}
</label>
</div>
</div>
我如何访问 FormArray 以将所有复选框设置为已选中?
最佳答案
您的模板将如下所示:
<div class="form-group" formGroupName="groupChapters">
<label for="">Select chapters</label>
<div *ngFor="let chapter of formChapters.controls; let i = index" class="checkbox">
<label>
<input type="checkbox" formControlName="{{i}}">
{{chapters[i].title}}
</label>
</div>
<button (click)="checkAll()">Check all</button>
</div>
添加到类中的方法:
private checkAll() {
this.groupForm.controls['groupChapters'].setValue(
this.groupForm.controls['groupChapters'].value
.map(value => true);
);
}
一个工作的 Plunk:http://embed.plnkr.co/8yXBn1DhboiIwRIv7AS0/
关于typescript - 检查 FormArray 中的所有复选框 - Angular 2 Reactive Form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45747816/
我是一名优秀的程序员,十分优秀!