angular - 如何在按钮列表上设置事件类

标签 angular

我有一个 Angular 2 应用程序,它有一个包含过滤器按钮列表的组件。 其中之一可以随时激活。 按钮定义来自一些 json 并且有一天会从服务器发送。

我的问题是如何为当前点击的按钮设置样式。 我应该在点击事件处理程序中设置它吗?那么我怎么知道点击了哪个按钮呢?

我的组件是这样的:

import { Component, EventEmitter, Output }  from '@angular/core';

@Component({
    selector: 'tileFilter',
    template: require('./tileFilter.component.html'),
    styles: [require('.//tileFilter.component.scss').toString()]
})

export class TileFilterComponent {

@Output() onCategorySelected = new EventEmitter<number>();

public activeClass: string = "nonactive"

 private categories: any[] = [
    { "Id": 0, "Name": "All" },
    { "Id": 3, "Name": "Popup" },
    { "Id": 4, "Name": "Cafe" },
    { "Id": 5, "Name": "Pub or bar" },
    { "Id": 9, "Name": "Restaurant" }
];

    constructor() {}

    onClick(category:any){
        this.activeClass ="active";
        this.onCategorySelected.emit(<number>category.Id);
    }

}

我的 HTML 看起来像这样:

<ul class="tile-filters inline-list inline-list--sm unstyled-list collapse">
  <li *ngFor="let c of categories">
      <button class="button button--recede button--sm {{activeClass}}" (click)="onClick(c)">{{c.Name}}</button>
  </li>
</ul>

这个的常见模式是什么?

最佳答案

常见的模式是创建一个新变量来跟踪单击了哪个按钮,在单击事件时重新分配该变量,并根据当前按钮是否等于所选按钮来绑定(bind)事件类。

来自Angular 2 tutorial :

//...

<ul class="heroes">
  <li *ngFor="let hero of heroes"
    [class.selected]="hero === selectedHero"
    (click)="onSelect(hero)">
    <span class="badge">{{hero.id}}</span> {{hero.name}}
  </li>
</ul>

//...

export class AppComponent {
  title = 'Tour of Heroes';
  heroes = HEROES;
  selectedHero: Hero;
  onSelect(hero: Hero) { this.selectedHero = hero; }
}

关于angular - 如何在按钮列表上设置事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593516/

相关文章:

javascript - 如何通过在angular7中的模态组件外部单击来隐藏ngx-simple-modal?

angular - 如何在 Angular 项目中正确构建 CRUD 路由?

angular - 无法执行上下文菜单中的功能

angular - 如何在 ion-item 中使用 *ngFor 以便每个都有单独的功能

javascript - React Native 中的嵌套 ngfor 等价物

node.js - 尝试在 Suse 服务器上安装 Angular 时出错

angular - 按顺序处理请求

javascript - 如何从 JSON 数组中获取数据并在表中显示数据?

angular - 从指令中创建/获取 TemplateRef

javascript - NGXS 在 setState 中传播状态