在ngFor angular 2中给出活动类onclick

Vug*_*dov 12 ng-class ngfor angular

嗨,我有无序列表,所有这些都有活跃的类.我想在点击任何列表项时切换活动类.我的代码是这样的

<ul class="sub_modules">
  <li *ngFor="let subModule of subModules" class="active">
    <a>{{ subModule.name }}</a>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我这样做吗?

小智 22

只需创建一个索引属性.用于let i = index使用(单击)事件设置索引.然后检查是否selectedIndex === i将set class"active"设置为true

<ul class="sub_modules">
  <li *ngFor="let subModule of subModules; let i = index" 
      [class.active]="selectedIndex === i" 
      (click)="setIndex(i)">
    <a>{{ subModule.name }}</a>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

然后在typescript文件上:只需设置selectedIndex.

export class ClassName {
   selectedIndex: number = null;

   setIndex(index: number) {
      selectedIndex = index;
   }
}
Run Code Online (Sandbox Code Playgroud)

  • HTML块中有错误.`[class.active] ='sIndex === i`而不是`[class.active] ='selectedIndex === i`.否则,答案很好:-) (2认同)

Edu*_*gas 18

你可以这样做:

<ul class="sub_modules">
  <li (click)="activateClass(subModule)"
      *ngFor="let subModule of subModules"
      [ngClass]="{'active': subModule.active}">
    <a>{{ subModule.name }}</a>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

在组件上

activateClass(subModule){
  subModule.active = !subModule.active;    
}
Run Code Online (Sandbox Code Playgroud)

在Ng类中,第一个属性是您要添加的类,第二个属性是条件;