Незрозуміла поведінка обробників подій Angular

💡 Усі статті, обговорення, новини про Front-end — в одному місці. Приєднуйтесь до Front-end спільноти!

Доброго дня. Вирішив вивчати Ангуляр, виникло питання. Зробив перемикач світлин, хочу щоб воно і кнопками крутило зображення і стрілками клавіатури. На скріншоті видно, як я повісив обробники на кнопки. Обробники по кліку нормально працюють. А обробники по натисканню стрілок працюють вельми дивно. Якщо не натискав мишкою кнопки то стрілки не працюють. Тобто якщо натиснув наприклад мишкою «Next product», то тоді права стрілка працюватиме, — можна прокрутити світлини до останньої вправо. Але в зворотній бік ліва стрілка не працюватиме, допоки не натиснеш мишкою на кнопку «Previous product». Якщо натиснеш мишкою кнопку то відповідно можна листати стрілкою вліво. Підкажіть будь-ласка в чому причина такої поведінки?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Спробуй це:

  @HostListener('window:keyup', ['$event'])

  handleKeyboardEvent(event: KeyboardEvent) {
    if (event.key === 'ArrowRight') {
      this.prevProductHandler();
    }

    if (event.key === 'ArrowLeft') {
      this.nextProductHandler();
    }
  }

Коли ви клікаєте мишкою вона фокусується, й тоді діють keyboard обробники. Я думаю у вашому випадку замість обробників на кнопках, можна додати глобальний hostlistener на document, і в залежності від коду кнопки з івента викликати відповідні методи.

Ви не туди написали, тут обговорюють тільки проблеми з виїздом та бусики незламності.

Підписатись на коментарі