Я все еще новичок в Angular, и я изо всех сил пытаюсь получить элемент DOM Angular Click Listener. У меня есть следующий компонент HTML:
<div *ngFor="let menuItem of menu; index as itemId" class="menuItem">
<div class="menuItem__top" (click)="itemClicked($event, !!menuItem.submenu)">
<!-- Additional divs inside... -->
</div>
</div>
Я бы хотел переключать класс "menuItem__top" при нажатии. Мой подход состоял в том, чтобы использовать прослушиватель события click, но я не могу заставить исходный элемент применить класс.
itemClicked(event, hasSubmenu){
console.log(this) //is the component
let target = event.target || event.srcElement || event.currentTarget;
if(hasSubmenu){
console.log(target);
}
}
Это можно сделать, получив цель $ event, но так я бы нужно проверить цель и перейти с ближайшего (". menuItem__top") до правильного исходного элемента. Есть ли простой способ в Angular передать исходный элемент прослушивателя щелчка функции щелчка или способ получить его внутри функции щелчка?
В ванили JS это было бы так же просто, как используя «this» внутри функции click, но в Angular это привязка к компоненту. (В этом случае было бы нормально потерять привязку к компоненту, если это единственный способ.)
Я думал о двух способах:
Назначение Dynami c ссылка, содержащая некоторую строку и itemId, передавая itemId и извлекая ссылочный объект на основе itemId в слушателе.
Использование @HostListener для прослушивания каждого "menuItem__top "нажимайте и переключайте класс каждый раз.
Какой, по вашему мнению, лучший способ? Я чувствую, что мне здесь не хватает чего-то простого.