【发布时间】:2019-09-27 15:55:44
【问题描述】:
使用FormArray我的组件上有绑定复选框,复选框的默认label是选择,当我点击复选框时,label将变为选中对于每个复选框(应该是),我还得到了 selectAll 按钮,它将所有复选框的值更改为 true 并将文本更改为 selected,我的问题是:
- 当我只选择一个复选框时,更改
label也会影响其他复选框 - 当我有
selectAll复选框时,所有复选框标签将更改为选中,然后如果我取消选中单个复选框,它应该将label更改为select
这是我尝试过的:
html 文件
<div *ngIf="isShowResponse">
<p>Inquiry Response</p>
<form [formGroup]="form" (ngSubmit)="submitSelectedCheckboxes()">
<ng-container formArrayName="receivedSummons" *ngFor="let summon of formReceivedSummons.controls; let i = index">
<ng-container [formGroupName]="i">
<input type="checkbox" formControlName="isChecked"
(change)="checkedState(summon)">
{{ summonText }}
</ng-container>
</ng-container>
</form>
<!-- <pre>{{form.value | json}}</pre> -->
<button (click)="selectAll()">Select All</button>
</div>
ts 文件
checkedState(summon) {
summon.checked = !summon.checked;
this.summonText = summon.checked === true ? 'selected' : 'select';
}
selectAll() {
this.formReceivedSummons.controls.map(value => value.get('isChecked').setValue(true));
return this.summonText = 'selected';
}
这是我完整的stackblitz demo,我可以使用一些建议和更好的做法来解决这个问题
【问题讨论】:
标签: javascript angular typescript checkbox