Angular ngClass mat-list-item добавляет условие для применения цвета фона

Я пытался применить цвет фона с помощью ngClass к матовому списку и элементу матового списка. Если условие истинно, цвет фона желтый, в противном случае он остается обычным белым. Когда я просто применяю обычный

style = "background-color:yellow" 

в моем html-коде все ячейки элемента списка матов имеют желтый цвет фона.

Я изменил его следующим образом, который не работает

[ngClass] = "myData.hasAlert ? 'highlight-color' : 'normal-color'"
[ngClass] = "{'highlight-color' : myData.hasAlert }"

в качестве теста я даже пробую ng-style="{highlight: myData.hasAlert}", но ничего не работает.

Вот мой код

<div class = "ng-container" >
    <mat-list [ngClass] = "test.IsNotRedAlert ? 'my-list-black-font' : 'my-list-red-font'"> 
        <!-- insert the subtotals-->
        <mat-list-item 
          fxLayoutAlign = "end" 
          class = "metric-possition"
          *ngFor = "let myData of AllData"
          class = "background-color:yellow">
            {{myData.balance}}</span>
        </mat-list-item>
    </mat-list>
</div>

сначала я добавил класс css в список матов ngClass, но он изменил все дочерние элементы списка матов на желтый цвет фона под списком матов. Мне нужно применить фон только к определенной ячейке элемента списка матов, если условие myData.hasAlert истинно.

Я пробовал со следующим css

.highlight .mat-list-item {
  background-color: yellow;
}

.highlight   {
  background-color: yellow;
}

любая помощь приветствуется. Спасибо.

class = "background-color:yellow" недопустимый формат для класса, для корректного формата проверьте мой ответ

Ravi Sevta 28.03.2019 12:29
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
1
1 532
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Используя ngClass, это правильный синтаксис, который вы должны использовать в соответствии с документация:

<some-element [ngClass] = "{'first': true, 'second': true, 'third': false}">...</some-element>

Итак, в вашем случае это будет:

<mat-list-item [ngClass] = "{'yellow-background': myData.hasAlert}">

И в вашем файле css:

.yellow-background {
    background-color: yellow;
}

Ваше объявление класса недействительно.

Изменить код ниже

<div class = "ng-container">

  <mat-list>
    <!-- insert the subtotals-->
    <mat-list-item *ngFor = "let myData of allData"
                   [ngClass] = "{'highlight':myData.hasAlert}">
      {{myData.balance}}
    </mat-list-item>
  </mat-list>
</div>

Вместо ngClass вы можете использовать этот синтаксис:

 <mat-list [class.my-list-black-font] = "test.IsNotRedAlert">

Другие вопросы по теме