如何使用ngFor和ngIf选择Angular中的所有复选框?

问题描述

我想选择Angular中的所有复选框,在激活“ Seleccionar todo(全选)”时我有ngFor和ngIf,并且所有月份的复选框都已激活。月份存储在数组中。

HTML representation

<div class="form-group row">
     <label class="col-2 col-form-label">Meses de siembra</label>
         <div class="col-8">
             <table>
                 <tr>
                     <label>
                         <input type="checkbox" ng-model name="seleccionarTodo"> Seleccionar todo
                     </label>
                 </tr>
                 <tr>
                     <td>
                         <div *ngFor="let m of mesesSiembra; let i=index">
                             <label *ngIf="i<6">
                             <input type="checkbox" ng-model name="mes1a6"> {{m.nombre}}
                             </label>
                         </div>
                     </td>
                     <td>
                         <div *ngFor="let m of mesesSiembra; let i=index">
                             <label *ngIf="i>5">
                                 <input type="checkbox" ng-model name="mes7a12"> {{m.nombre}}
                             </label>
                         </div>
                     </td>
                 </tr>
             </table>
         </div>
</div>

解决方法

mesesSiembra中的每个m都需要具有一个代表复选框已选中状态的布尔属性,并将其与[checked]="m.checked"(click)="m.checked = !m.checked"绑定。您还需要为每个表单元素使用唯一的名称,因此请使用索引使名称唯一[name]="'mes_' + i"

要检查所有这些,您可以使用功能

this.mesesSiembra = this.mesesSiembra.map(m => ({ ...m,checked: true }));

这是一个演示https://stackblitz.com/edit/angular-ivy-ibqzjj?file=src%2Fapp%2Fapp.component.html

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...