Как использовать ngClass с условными операторами

#html #angular #typescript #ng-class #angular-ng-if

#HTML #angular #typescript #ng-class #angular-ng-if

Вопрос:

Цвет моего элемента значка mat должен изменяться динамически.

 <mat-icon class="temperature icon" svgIcon="thermometer-alert" matTooltip = {{temp_tooltip}}
          aria-label="Icon that displays a tooltip when focused or hovered over"
          [ngClass]= "{
            'safe' : 23 <= temp_tooltip <= 24.5,
            'alarm_lowside' : 21 <= temp_tooltip < 23,
            'alarm_highside' : 24.5 < temp_tooltip <= 26, 
            'critical_lowside' : temp_tooltip < 21,
            'critical_highside' : temp_tooltip > 26
           }" >
        </mat-icon>

 

значение temp_tooltip привязывается в component.ts

и css имеют цветовой стиль

 .safe {
 color: green
}

.alarm_lowside {
    color: yellow
}

.alarm_highside {
    color: yellow
}

.critical_lowside {
    color: red
}

.critical_highside{
    color: red
}

 

он отлично работает с классами critical_lowside и critical_highside, но не для других классов. Как исправить. Правильно ли определен способ определения ngClass?

Комментарии:

1. Измените свое условие на это: temp_tooltip >= 23 amp;amp; temp_tooltip <= 24.5, … сделайте то же самое для всех.

Ответ №1:

23 <= temp_tooltip <= 24.5 это неправильное выражение в javascript / typescript.

Вы должны найти другой способ сформулировать это условие следующим образом 23 <= temp_tooltip amp;amp; temp_tooltip <= 24.5

Ответ №2:

Правильный синтаксис будет таким:

  [ngClass]= "{
        'safe' : temp_tooltip >= 23 amp;amp; temp_tooltip <= 24.5,
        'alarm_lowside' : temp_tooltip >= 21 amp;amp; temp_tooltip < 23,
        'alarm_highside' : temp_tooltip > 24.5 amp;amp; temp_tooltip <= 26, 
        'critical_lowside' : temp_tooltip < 21,
        'critical_highside' : temp_tooltip > 26
   }"