css - 使用 Angular 2 快速设置 html 样式的方法

标签 css angular typescript

我的模板中有以下 ngFor

<span id="work-hour-span" *ngFor="let hour of hoursArray">{{hour}}</span>

我想要实现的是根据小时的值为这个跨度设置不同的颜色

例如,

如果小时在0到2之间,小时的文字颜色为红色,

如果小时在2到4之间,小时的文字颜色为蓝色,

如果小时在4到6之间,小时的文字颜色为绿色,

如果小时在6到8之间,小时的文字颜色为黄色,

如果小时在8到10之间,小时的文字颜色为紫色,

如果小时在10到12之间,小时的文字颜色为粉红色,

如果小时在12到14之间,小时的文字颜色为灰色,

我能想到的唯一方法是拥有一个非常困惑的 ng-class 的完整日志

[ngClass]="{redColor: hour < 2} [ngClass]="{blueColor: hour > 2 && hour < 4}...etc 

最佳答案

<span [style.color]="getColor(hour)" id="work-hour-span" *ngFor="let hour of hoursArray">{{hour}}</span>
getColor(hour) {
  switch(hour) {
    case 0:
    case 1:
      return 'red';
    case 2:
    case 3: 
      return 'blue';
    case 4:
    case 5:
      return 'green'
    ...
  }
}

出于性能原因,最好将 getColor() 移至管道

@Pipe({ name: 'hourColor' })
class HourColorPipe implements PipeTransform {
  transform(hour:number) {
      switch(hour) {
      case 0:
      case 1:
        return 'red';
      case 2:
      case 3: 
        return 'blue';
      case 4:
      case 5:
        return 'green'
      ...
    }
  }
}
<span [style.color]="hour | hourColor" id="work-hour-span" *ngFor="let hour 

关于css - 使用 Angular 2 快速设置 html 样式的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42621738/

相关文章:

html - 自定义复选框不起作用

html - 无法让视频标题适合屏幕大小?

javascript - 将轮播内容从图像更改为背景图像

css - Primefaces css 覆盖自定义 css

angular2 - 带复选框的 FormArray

angular - 无法获取 jhipster 网关主页

angular - 使用 ngFor Angular 创建复选框列表

javascript - 如何在 Mobx 中将多个商店合并为 Root Store 并在彼此的字段和功能中进行访问

javascript - 返回类型 string|((args : ValidationArguments) => string) return?

javascript - 如何拥有 Immutable.js 可选 (TypeScript) Record 类属性