html - Angular2 - 将 CSS 类添加到选定元素

标签 html css angular typescript angular2-directives

我的 .html 中有以下代码:

<ul id="navbar-example" class="nav nav-pills nav-stacked" *ngFor="let object of objects; let i = index;">
    <li class="nav-item" *ngIf = "i==0">
        <a id="{{object.code}}" class="nav-link active" (click)="clicked(object)">{{object.name}}</a>
    </li>
    <li class="nav-item" *ngIf = "i!=0">
        <a id="{{object.code}}" class="nav-link" (click)="clicked(object)">{{object.name}}</a>
    </li>
</ul>

所以当 ul 时第一个元素是事件的已加载。现在我想添加 active所选类 <a></a>并切换具有 active 的那个.我怎样才能实现它?

编辑:

我简化为:

<ul id="navbar-example" class="nav nav-pills nav-stacked" *ngFor="let object of objects;">
    <li class="nav-item" >
        <a [ngClass]="{ 'active': selected == object }"(click)="clicked(object)">{{object.names}}</a>
    </li>
</ul>

但它不起作用。这是我的组件:

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { objectsService } from './objects.service';
import { object } from './object';


@Component({
  selector: 'objects',
  styles: [require('./object.css')],
  template: require('./objects.html'),
})
export class objects implements OnInit {
  objects: object[];
  codvisita: string;
  selected: any;

  constructor(private route: ActivatedRoute, private objectsService: objectsService) {
  }

  ngOnInit() {
    this.route.params.forEach((params: Params) => {
      this.codvisita = params['id'];
    });
    this.objectsService.getobjects(this.codvisita)
      .subscribe(
        objects => {
          this.objects = objects;
          this.selected = this.objects[0];
          console.log(this.selected);
        }
      );
  }

  clicked(e) {
    this.selected = e;
    console.log(this.selected);
  }
}

最佳答案

在您的组件中创建一个变量,我们称它为 temp,然后将 temp 的值设置为单击事件中的选定对象:

temp: any;

clicked(object) {
    this.temp = object;
}

然后在您的模板中,您可以使用 NgClass 指令来实现您想要的:

<ul id="navbar-example" class="nav nav-pills nav-stacked" *ngFor="let object of objects; let i = index;">
    <li class="nav-item">
        <a id="{{object.code}}" class="nav-link" [ngClass]="{ 'active': temp.code == object.code }" (click)="clicked(object)">{{object.name}}</a>
    </li>
</ul>

关于html - Angular2 - 将 CSS 类添加到选定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40115436/

相关文章:

javascript - Soundmanager 2,无论我尝试什么,我都无法设置 SWF 路径

css - 仅使用 CSS 使图像在网格中居中,限制高度,保持纵横比

css - 无法更改 Sharepoint 2013 中 asp 菜单上的字体颜色

Angular - 如何在组件之间订阅数据

html - VSCode 中的自动缩进 <head> 和 <body>

html - 在CSS3的@page中动态设置样式

php - 如何使用 jquery 在自动刷新 div 之前显示消息

css - 背景 :cover cutting off image

angular - 如何将数据从 MatBottomSheet 返回到其父组件?

javascript - 如何在 Angular 2 中从一种模型映射到另一种模型?