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

Angular中如何获取<ul><li>下拉菜单选中项并打印到控制台

问题根因
  • change事件仅适用于<input>、<select>、<textarea>这类原生表单控件,普通<ul>列表元素不会触发该事件,绑定在ul上的监听完全无法响应下拉项点击动作。
  • 原有代码存在变量覆盖问题:selectedDay初始是存储所有下拉选项的数组,选中后直接将其赋值为单个选中值,会导致*ngFor遍历的数据源被覆盖,下拉选项会直接消失。
  • <li>元素本身没有value属性,即使事件绑定正确,也无法通过event.target.value拿到选中项内容。
修复步骤
  1. 将事件绑定从<ul>标签移除,改为给每个渲染出来的下拉项<li>绑定click事件,直接将当前遍历的选项值作为参数传入回调,不需要从事件对象中取值。
  2. 拆分存储变量:单独用一个数组存所有下拉选项,另一个变量存当前选中的值,避免数据源被覆盖。
修正后代码

HTML部分

<div class="dropdown">
  <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
    Dropdown
  </button>
  <ul class="dropdown-menu">
    <li 
      class="dropdown-item" 
      *ngFor="let option of dropdownOptions"
      (click)="selectChangeHandler(option)"
    >
      {{option}}
    </li>
  </ul>
</div>

TS部分

// 下拉选项数据源、选中值分开存储
dropdownOptions = ['GCP', 'Azure', 'AWS'];
selectedOption: string = '';

selectChangeHandler(option: string) {
  this.selectedOption = option;
  console.log('选中的选项:', this.selectedOption);
}

可选适配:如果需要匹配Bootstrap下拉菜单的选中高亮样式,可以给li标签加动态类绑定:[class.active]="selectedOption === option",点击对应选项时会自动加上高亮样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 09:24:35