Как настроить пользовательский список хостов для пользовательских элементов? (angular 2)

#angular #typescript

#angular #typescript

Вопрос:

Я могу использовать HostListener для прослушивания документов:

 @HostListener('document:click', ['$event'])
someAction(event) {
    console.log('done');
}
  

Как я могу прослушивать click события для элементов. Например:

 <span class="someClass"></span>
  

Ответ №1:

Ответ Гюнтера правильный, но вы можете создать директиву с помощью HostListener для более глобального смысла использования (например, кнопка «Избранное / нравится»).

 @Directive({
selector: '.favorite'
})
class FavoriteDirective(){
 @HostListener('click', ['$event.target']) onClick(_element) {
    ...
  }
}
  

Ответ №2:

@HostListener('click', ['$event']) заключается в прослушивании событий на самом элементе хоста. Другого варианта использования, для которого они могут быть использованы, нет.

Одним исключением являются глобальные события, подобные тем, которые вы использовали с глобальными целями событий, такими как window: , document: , или body .

Для прослушивания произвольных элементов используйте

 <span class="someClass" (click)="someAction($event)"></span>