You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何根据数组内ID预设选中复选框

解决Angular复选框重新加载后自动选中已存在用户的问题

先修正你代码里的两处小问题:

  • 模板里的{{ userList.Name }}要改成{{ user.Name }},因为*ngFor循环的是单个user对象
  • selectUser方法里的Name:Name需替换为Name: user.Name,否则会引用未定义变量

接下来实现重新加载时自动选中已在tempLists中的用户,只需给复选框绑定[checked]属性,判断当前用户ID是否存在于选中列表即可:

修改后的模板代码

<div *ngFor="let user of userList">
  {{ user.Name }}
  <input type="checkbox" 
         (change)="selectUser($event, user)"
         [checked]="tempLists.some(item => item.userID === user.UserID)">
</div>

优化后的组件方法

selectUser(event: Event, user: any) {
  const checkbox = event.target as HTMLInputElement;
  if (checkbox.checked) {
    const userDetails = {
      userID: user.UserID,
      Name: user.Name,
    };
    this.tempLists.push(userDetails);
  } else {
    this.tempLists = this.tempLists.filter(obj => obj.userID !== user.UserID);
  }
}

如果觉得模板里的表达式过长,也可以封装成组件方法让模板更简洁:

添加组件方法

isUserSelected(user: any): boolean {
  return this.tempLists.some(item => item.userID === user.UserID);
}

修改模板调用方法

<input type="checkbox" 
       (change)="selectUser($event, user)"
       [checked]="isUserSelected(user)">

原理说明

[checked]是Angular的单向属性绑定,每当视图更新(比如重新加载userList、tempLists数组变化)时,会自动执行判断逻辑,将已在选中列表中的用户对应的复选框设为选中状态。

内容的提问来源于stack exchange,提问作者user3653474

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 04:26:55