Событие клавиатуры не отправляется Введите ключевое событие в угловых - PullRequest
0 голосов
/ 02 апреля 2019

Я использую компонент чипов materialize-css в угловом приложении.Для создания фишек я должен нажать Enter.но в мобильном телефоне нет клавиши ввода.

SO Я добавил событие textInput на элемент ввода чипов, и если пользователь нажмет запятую, оно отправит событие ввода клавиши.

__element.addEventListener('textInput', function (__event) {
      const keyCode = __event.data.charCodeAt(0);
      const COMMA_KEY_CODE = 44;
      if (keyCode == COMMA_KEY_CODE) {
        __event.preventDefault();
        __event.currentTarget.dispatchEvent(new KeyboardEvent('keydown', { key: "Enter" }));
      }
});

При нажатии запятой я получаю событие, но ононе отправляет событие ввода.

Но если я использую следующую строку для отправки события ввода ключа

__event.currentTarget.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 13 }));

, оно показывает

Argument of type '{ keyCode: number; }' is not assignable to parameter of type 'KeyboardEventInit'.
  Object literal may only specify known properties, and 'keyCode' does not exist in type 'KeyboardEventInit'.

Но тот же код работает, еслия запускаю его прямо на консоли.

Проблема на GitHub: https://github.com/Dogfalo/materialize/issues/5722

1 Ответ

0 голосов
/ 03 апреля 2019

Это может быть достигнуто в Angular путем привязки события keydown к вашему входу с добавлением enter имени ключа к событию как

<input (keydown.enter)="onKeydown($event)">

И определение для события может быть

onKeydown(event) {
    //This code will run only when an enter key is pressed
}
...