@Drovosek01

Как в Anuglar взять DOM элемент по событию?

Есть такой метод в компоненте проекта на Angular 11, который прослушивает нажатия клавиш на клавиатуре
@HostListener('document:keydown', ['$event'])
  public someMethod(event: KeyboardEvent) {
    console.log('event', event);
  }

Если я воспользуюсь свойством event.target, то получу поле типа EventTarget у которого нет никаких свойств и есть только 3 метода для работы с событиями.

Собственно как мне получить элемент типа NodeList или HTMLColletion или что-то типо того?
Если вывести в консоль сам event, то там будет стандартная структура DOM компонента, но как ею воспользоваться из кода компонента не могу понять.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
Если я воспользуюсь свойством event.target, то получу поле типа EventTarget у которого нет никаких свойств

Правильно, потому что это универсальный тип, который не может знать откуда вы этот эвент получили. Источником евента является объект, имплементирующий интерфейс EventTarget, и большего эвенту и не надо.
Надо просто прописать явно что именно получаете.

@HostListener('document:keydown', ['$event', '$event.target'])
  public someMethod(event: KeyboardEvent, target: HTMLElement) {
    console.log('event', event, target);
  }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
constructor(private el: ElementRef) { }

Потом используйте как this.el.nativeElement
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы