Как предотвратить добавление динамически добавляемого родительского класса к его дочерним элементам в Angular Material, mat-selection-list?

Я создал диалог со списком опций (пользователей), которые можно выбрать с помощью mat-selection-list. У меня есть случай использования, когда я должен отключить список уже выбранных пользователей от повторного выбора / щелчка.

Итак, я получаю выбранных пользователей из события, добавляю флаг, чтобы узнать, был ли пользователь уже выбран или нет, и отключаю mat-list-option на основе возвращенного логического значения из флага, который у меня есть. Вот код для этого.

<mat-selection-list 
  #listItem 
  (selectionChange) = "handleSelection($event, listItem.selectedOptions)">
  <mat-list-option 
    *ngFor = "let item of filteredArray" 
    [value] = "item" 
    [disabled] = "item.isSelected">
    {{getDisplayValue(item)}}
    <mat-divider></mat-divider>
  </mat-list-option>
</mat-selection-list>

Теперь проблема в том, что я хочу также поставить галочку для уже выбранных пользователей, поскольку mat-list-option имеет дочерний элемент mat-checkbox.

Поэтому, когда я отключаю mat-list-option (родительский), он также добавляет класс mat-psuedo-checkbox-disabled к флажку (дочерний элемент). Я хочу, чтобы этого не произошло.

Или предложите мне эффективный способ переопределить класс mat-checkbox и добавить к нему класс checked, даже если mat-list-option отключил класс, добавленный к нему.

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

ОБНОВИТЬ: Решил это, добавив к этому свойство mat-list-option selected. Как глупо было упустить это.

Возможно ли создать образец StackBlitz, воспроизводящий эту проблему?

SiddAjmera 29.09.2018 09:07

Конечно, сейчас я не в состоянии это сделать. Возможно, я смогу это сделать к завтрашнему утру. Извините.

Sangy_36 29.09.2018 09:42
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
2
287
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
 <mat-list-option *ngFor = "let item of filteredArray" [value] = "item" [disabled] = "item.isSelected" [selected] = "item.isSelected">

Смог решить эту проблему с помощью моего коллеги.

я смотрел не в том месте.

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