【问题标题】:How to select all checkboxes in Angular with ngFor and ngIf?如何使用 ngFor 和 ngIf 选择 Angular 中的所有复选框?
【发布时间】:2020-12-06 02:54:09
【问题描述】:

我想选中 Angular 中的所有复选框,在激活“Seleccionar todo (Select all)”时我有 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>

【问题讨论】:

  • 您使用的是 Angular 还是 AngularJs? *ngFor 是 Angular 语法,ng-model 是 AngularJs 语法。
  • 我不能准确地告诉你,我是初学者。我已经安装了这个cli.angular.io
  • 那是Angular,AngularJs是遗留的JavaScript Angular 1.X
  • 可能需要更改html代码。你会告诉我,最好表示月份数组的复选框。
  • 这是 StackBlitz 上的一个演示项目stackblitz.com/edit/…

标签: angular checkbox ngfor angular-ng-if


【解决方案1】:

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

要检查它们,你有一个函数

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

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

【讨论】:

  • 我如何知道是否选中了复选框以稍后发布帖子?
  • mesesSiembra 是一个数组,每个元素都有一个选中的属性
  • 如何在 javascript 中访问该属性?
  • this.mesesSiembra.filter(m =&gt; m.checked) 会给你检查的
  • 我已经完成了var chkBox=this.mesesSiembra.filter(m =&gt; m.checked); console.log(chkBox);,但它返回一个空数组。 mesesSiembra 已保存到数据库中,我应该为“已检查”添加一列吗?
猜你喜欢
  • 2017-02-03
  • 2016-07-03
  • 2017-01-27
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多