Как выделить выбранный элемент-мат-лист цветом в угловой?

Здесь у меня есть несколько элементов списка матов, когда я нажимаю на уведомление, панель инструментов или комментарии, я хочу выделить его красным цветом, как это возможно в angular?

<mat-list>
   <mat-list-item style = "cursor: pointer" routerLink = "/base/dashboard">Dashboard</mat-list-item>
   <mat-list-item style = "cursor: pointer" routerLink = "/base/notification">Notification</mat-list-item>
   <mat-list-item style = "cursor: pointer" routerLink = "/base/comments">Comments</mat-list-item>
</mat-list>
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
13
0
28 916
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Я так думаю

clickedItem: 'dashboard' | 'notification' | 'comments';


onClick(item: 'dashboard' | 'notification' | 'comments') {
  this.clickedItem = item;
}
.red {
  background-color: red;
}
<mat-list>
   <mat-list-item [ngClass] = "{red: clickedItem === 'dashboard'}"            (click) = "onClick('dashboard')" style = "cursor: pointer" routerLink = "/base/dashboard">Dashboard</mat-list-item>
   <mat-list-item [ngClass] = "{red: clickedItem === 'notification'}"  (click) = "onClick('notification')" style = "cursor: pointer" routerLink = "/base/notification">Notification</mat-list-item>
   <mat-list-item  [ngClass] = "{red: clickedItem === 'comments'}" (click) = "onClick('comments')" style = "cursor: pointer" routerLink = "/base/comments">Comments</mat-list-item>
</mat-list>
Ответ принят как подходящий

Поскольку вы уже используете routerLink, вам следует воспользоваться преимуществами routerLinkActive.

html:

<mat-list>
   <mat-list-item style = "cursor: pointer" routerLink = "/base/dashboard" [routerLinkActive] = "['is-active']">Dashboard</mat-list-item>
   <mat-list-item style = "cursor: pointer" routerLink = "/base/notification" [routerLinkActive] = "['is-active']">Notification</mat-list-item>
   <mat-list-item style = "cursor: pointer" routerLink = "/base/comments" [routerLinkActive] = "['is-active']">Comments</mat-list-item>
</mat-list>

css:

.is-active {
    background-color: red;
}

@AmishaRana без проблем :)

Peter Kim 20.09.2018 16:26

Когда элементы списка куда-то перемещаются, следует использовать <mat-nav-list> с элементами <a mat-list-item> в качестве элементов списка. Навигационный список будет отрисован с использованием role = "navigation", и ему может быть предоставлен aria-label для предоставления контекста по набору представленных опций навигации. Дополнительный интерактивный контент, такой как кнопки, не следует добавлять внутри якорей.

<mat-nav-list>
    <a mat-list-item 
    *ngFor = "let report of category.reports">
    <span>{{ report.reportName }}</span>
    </a>
</mat-nav-list>

Это можно использовать, если вы хотите специально настроить таргетинг и изменить цвет. Для эффектов зависания вышеупомянутый должен работать нормально

.mat-list-item {
background-color: #fefefe; 
}

Мы можем добиться этого, изменив стиль ниже.

.mat-nav-list .mat-list-item:focus,
.mat-action-list .mat-list-item:focus,
.mat-list-option:focus {
  background: #76b900 !important;
}

Другой подход - использовать атрибут отобранный по арии элемента mat-list-option

.mat-list-option[aria-selected = "true"] {
  background: #76b900 !important;
}

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