Аргумент $event
- это MouseEvent
, а метод onClick
вызывается после того, как вы щелкнете раскрывающийся список, но не до этого.
Изменения, которые необходимо сделать:
1. Добавьте идентификатор, локальная ссылка и функция-обработчик событий открытия.
<ng-select id="element" #element (open)="onOpen()"...></ng-select>
2. Используйте ViewChild
, чтобы получить ссылку на элемент.
@ViewChild('element') element;
3. код внутри функций triggetClickEvent()
и onOpen()
.
triggetClickEvent(){
let el = document.getElementById("element");
el.classList.add("customCSSClass");
this.element.focus();
}
onOpen() {
let el = document.getElementById("element");
el.classList.remove("customCSSClass");
}
Примечание: я знаю, что прямой доступ к DOM - не лучшая практика, и я попытался использовать Renderer2, но событие focus
каким-то образом не работает с ним.
3. Добавьте ниже css См. Раздел «Пользовательские стили» в ng-select
.ng-select.ng-select-focused.customCSSClass ::ng-deep .ng-value {
background-color: blue;
}
.ng-select.ng-select-focused.customCSSClass ::ng-deep .ng-placeholder {
background-color: blue ;
}
Здесь вы можете найти рабочий фрагмент кода