我使用ngFor动态创建项目的下拉列表,循环通过字符串数组(从SQL查询中获取),保存在服务中 .
<li *ngFor="let vehicleClasses of getVehicleClassList(); let i = index" (click)="toggleCheckBox(i)">
<a>
<input type="checkbox" id="vehCB_{{i}}"/>{{vehicleClasses}}
</a>
</li>
下拉菜单有一个复选框,然后是选择的名称( {{VehicleClasses}}
. 如何存储用户选中的复选框(最好是从服务中而不是组件中)?
理想情况下,我想要一个存储复选框值的布尔数组 . 如果可能的话,我可以将复选框绑定到一个值,这样,例如,如果某个函数要更改所有复选框布尔值,复选框会更新吗?
我已经看到 ngModel
用于其他类似的场景 - 但我还没有成功地使它工作 .
2 回答
首先,尽量避免在绑定中使用方法
每次更改检测运行时,都会调用此类方法,并且更改检测会经常运行 . 将结果分配给属性,然后绑定到该属性 .
我很抱歉在发布问题后如此迅速地发布了答案 . 我可以删除这个问题,如果愿意 - 但万一其他人遇到类似的问题 .
I didn't realise I could use ngModel to directly bind to a boolean array from within a service. 使用ngFor的索引表示法,我可以轻松地将每个复选框绑定到布尔数组中的元素:
我在直接修改布尔数组的服务中编写的函数导致复选框正确更新 . 如果其他人有更好的方式做到这一点,我很想知道 - 虽然这恰好适合我的情况 .