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

如何从下拉选择列表中获取对象的username值而非ID存入数据库

解决方案

方案1:通过下拉选中事件直接获取用户名(推荐)

常用下拉组件都会提供选中change事件,直接在事件回调里拿到选中的完整对象给nameUser赋值即可:

  1. 修改下拉组件的模板代码,添加选中事件监听(逻辑对所有前端框架的下拉组件通用,以下是Angular场景示例):
<select [options]="listuser" [(ngModel)]="idUser" (change)="handleUserSelect($event)">
</select>
  1. 在ts文件中新增选中事件处理方法:
handleUserSelect(selected: any) {
  // 排除默认的空选项
  if(selected.id !== 'empty') {
    this.nameUser = selected.text;
  } else {
    this.nameUser = '';
  }
}

完成后选中用户时nameUser会自动赋值,提交时直接使用原有obj.username=this.nameUser逻辑即可。

方案2:提交时通过选中的用户ID匹配用户名

如果不想修改模板代码,可以在提交逻辑里通过已有的idUser到listuser数组中匹配对应的用户名,直接修改onSubmit方法对应部分即可:

onSubmit() {
  this.submitted = true;
  if(this.messageForm.valid) {
    this.success = true;
    let obj = this.messageForm.value;
    obj.id_examen = this.idExamen;
    obj.id_coach=sessionStorage.getItem('id');
    obj.id_cible=this.idUser;
    // 新增匹配用户名逻辑
    const targetUser = this.listuser.find(item => item.id === this.idUser);
    if(targetUser?.id !== 'empty') {
      this.nameUser = targetUser?.text || '';
      obj.username = this.nameUser;
    } else {
      obj.username = ''; // 未选中用户时的默认值可自行调整
    }

    this.coachingService.addLigneExamen(obj).then(res => {
      if (res === true) {
        this.closemodal()
      }
      this.closemodal()
    });
  }
}

另外你现有selectuser方法里定义的let id = ''全程没有被赋值,后续的if (id !== '')判断永远不会触发,属于冗余代码可以直接删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:54:03