将类添加到Angular 4中的元素

新手上路,请多包涵

我正在尝试使用 Angular 4 创建一个图片库。这背后的逻辑是向所选图像添加一个级联样式表 (CSS) 类,该类将在所选(单击)图像上显示一个红色边框。这是图片库的 CSS 样式表。

我想在我点击的图像上显示一个红色的选择方块。 this-is-a-class 应添加到所选图像。

 #container{
  border:1px solid red;
  height:auto;
}

ul li{
  margin-right:20px;
  margin-left:0;
  list-style-type:none;
  display:inline;
}

ul li img{
  width: 200px;
  height:200px;
  border:1px solid grey;
}

#select{
  border:2px solid violet;
}

.this-is-a-class{
  border: 10px solid red !important;
}

以下是模板代码

<div id="container">
  <ul>
    <li><img class="this-is-a-class" id="1" src="../../assets/images/1.jpg" (click)="addClass(id=1)"/></li>
    <li><img id="select" src="../../assets/images/2.png" (click)="addClass(id=2)"/></li>
    <li><img id="3" src="../../assets/images/3.jpg" (click)="addClass(id=3)"/></li>
    <li><img id="4" src="../../assets/images/4.png" (click)="addClass(id=4)"/></li>
    <li><img id="5" src="../../assets/images/5.jpg" (click)="addClass(id=5)"/></li>
  </ul>
</div>

<div>
  <h1>You Clicked on: {{id}}</h1>
</div>

组件代码如下

import { Component, OnInit } from '@angular/core';
import { DataService } from '../../services/data.service';

@Component({
  selector: 'app-user',
  templateUrl: './user.component.html',
  styleUrls: ['./user.component.css']
})

export class UserComponent implements OnInit {
  id: number;
  constructor() {
    console.log("Constructor working..")

  }

  ngOnInit() {
    console.log('ngOnInit works..');
  }

  //function to add the class to selected image to show the border.
  addClass(id) {
    this.id = id;
    //id = this.id? 'selectedImg' : 'null';
  }
}

原文由 Navaneeth S R 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 357
2 个回答

使用 [ngClass] 并基于 id 有条件地应用类。

在您的 HTML 文件中

 <li>
    <img [ngClass]="{'this-is-a-class': id === 1 }" id="1"
         src="../../assets/images/1.jpg" (click)="addClass(id=1)"/>
</li>
<li>
    <img [ngClass]="{'this-is-a-class': id === 2 }" id="2"
         src="../../assets/images/2.png" (click)="addClass(id=2)"/>
</li>

在您的 TypeScript 文件中:

 addClass(id: any) {
    this.id = id;
}

原文由 Arun Kumaresh 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是一个 plunker ,展示了如何将它与 ngClass 指令一起使用。

我正在用 div s 而不是 img s 进行演示。

模板:

 <ul>
      <li><div [ngClass]="{'this-is-a-class': selectedIndex == 1}" (click)="setSelected(1)"> </div></li>
      <li><div [ngClass]="{'this-is-a-class': selectedIndex == 2}" (click)="setSelected(2)"> </div></li>
      <li><div [ngClass]="{'this-is-a-class': selectedIndex == 3}" (click)="setSelected(3)"> </div></li>
</ul>

TS:

 export class App {
  selectedIndex = -1;

  setSelected(id: number) {
    this.selectedIndex = id;
  }
}

原文由 Fredrik Lundin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题