【问题标题】:Toggle between two ngClass classes on click, but only for clicked element单击时在两个 ngClass 类之间切换,但仅适用于单击的元素
【发布时间】:2019-02-14 19:12:38
【问题描述】:

我有一个使用*ngFor 循环生成的项目列表。我希望这些元素在点击时在两个类之间切换,但显然我只希望被点击的元素切换类。

HTML:

<div class="closed" (click)="clickEvent($event)" [ngClass]="{'open': toggle}"></div>

component.ts:

clickEvent(event) {
    private toggle : boolean = false;
    clickEvent(event) {
      this.toggle != this.toggle;
    }
  }

通过上述设置,应用了初始类 (.closed),但是当我单击一个元素时,.open 类不应用,并且再次单击该元素不会重新显示 .closed类。

【问题讨论】:

    标签: css angular angular5


    【解决方案1】:

    我在这里创建了一个堆栈闪电战:https://stackblitz.com/edit/angular-wc4dda,它可以满足您的需求,但您必须向列表中添加额外的数据。如果您单击示例中的项目,它会通过交换打开和关闭的类来隐藏列表项上的内容。

    【讨论】:

      【解决方案2】:

      使用 id 来帮助您。像这样:

      <div class="closed" onClick="change()" id="btn"></div>
      

      (javascript)

      var change = false;
      function change(){
        if(!change){
          document.getElementById("btn").className = "open";
          change = true;    
       }else{
          document.getElementyById("btn").className = "closed";
          change = false;
       }
      
      }
      

      【讨论】:

      • 感谢您的评论,但由于这些元素是通过 Angular 生成的手风琴,它们已经有一个基于索引的 id。
      • 那么对不起。我帮不了你
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多