javascript - 如何在 ng for 中选择单击的元素并仅向所选元素添加类?

标签 javascript angular typescript

我有一个列表,我的最后一列应该像苹果 "more options icon" ,这样就会弹出一个包含其他选项的下拉菜单。

<tr *ngFor="let foo of bars">
            <td>{{foo.id}}</td>
            <td>{{foo.name}}</td>
            <td class="more-options-menu">
              <i class="icon i-menu" (click)="toggleOptionsMenu()"></i>
              <div id="more-options-{{foo.id}}" [className]="!toggleOptions ? 'more-options-menu-content' : 'more-options-menu-content show-menu'">
                <a href="#">Link 1</a>
                <a href="#">Link 2</a>
                <a href="#">Link 3</a>
              </div>
            </td>
          </tr>

我遇到的问题是,如果我单击列表中的某个项目,则 css 类“show-menu”将添加到所有列表项目中,以便菜单显示在所有项目上,而不仅仅是显示我点击的那个。如何仅将类添加到所选项目?

我尝试使用 id“more-options-xx”,但我也不知道如何使用。

最佳答案

我建议您将选定的 ID 作为组件上的单独属性进行跟踪。例如:

selectedId = null;
toggleOptionsMenu(id) {
  this.selectedId = id;
}

在您的模板中:

<i class="icon i-menu" (click)="toggleOptionsMenu(foo.id)"></i>
<div id="more-options-{{foo.id}}" class="more-options-menu-content"
  [class.show-more]="foo.id === selectedId">

关于javascript - 如何在 ng for 中选择单击的元素并仅向所选元素添加类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55047668/

相关文章:

Javascript/jQuery - 在 iPhone 上点击元素外部

javascript - 如何创建一个平滑的动画来缓和目标

angular - 如何使用 Angular 2 中的指令在宿主元素上设置计算宽度

typescript - 如何在树形结构上列出 MongoDB 中的所有项目?

javascript - 从另一个页面调用 Javascript 函数?

javascript - Angular CDK 布局 - 如何在整个项目中全局包含 BreakPointObserver

Angular Material 步进器标题线样式

angular - 为什么我将 Content child 设置为 undefined?

javascript - 将 JQuery 转换为 addEventListener 用于按键事件

javascript - 如何更改有序列表中数字的背景颜色?