Отключить поиск по умолчанию на matSelect, когда keyup - PullRequest
0 голосов
/ 08 ноября 2018

При выборе html по умолчанию вы можете использовать клавиатуру для поиска элемента в этом списке, но задержка по умолчанию немного мала.Мне нужно найти решение, чтобы сделать этот таймер длиннее.

Я использую материал с углом 6 и не нашел встроенного решения (в doc нет свойства или опции).Я пытался создать собственное решение, но событие по умолчанию переопределяет мое.

Вот моя реализация с материалом: https://stackblitz.com/edit/material-tooltip-select-search?file=src%2Fapp%2Fapp.component.html

Как вы можете видеть, если я даю чаевые 't',«o», «n», затем «i», Тони выбирается примерно на 0,1 с, затем браузер выбирает имя, начинающееся с «i» (Iris).

Есть ли другое решение, кроме реализации моего собственного(или используя компонент поиска материала, это не идея) или есть способ отключить событие по умолчанию?

Заранее спасибо!

РЕШЕНИЕ:

По мнению маршалаответ, я сделал директиву, чтобы сделать работу: https://stackblitz.com/edit/material-select-search?file=src%2Fapp%2Fselect-search.directive.ts

1 Ответ

0 голосов
/ 08 ноября 2018

Кажется, добавление этого к вашему компоненту, чтобы остановить распространение по умолчанию на событии keydown, делает свое дело.

constructor(){
     document.addEventListener('keydown', e => {
      if ((e.target as any).nodeName === 'MAT-SELECT') {
        e.stopImmediatePropagation();
      }
    }, true);
  }

Пожалуйста, обратитесь к этой проблеме GitHub, которая предоставляет пример Stabblitz.

https://github.com/angular/material2/issues/11654


Вам нужно захватить событие keydown и stopImmediatePropagation(), прежде чем оно перейдет к представлению / mat-select. Вот почему <mat-select placeholder="Favorite food" (keydown)="" не решит эту проблему, поскольку событие уже было обработано компонентом mat-select. по времени (keydown) вывод срабатывает через шаблон.

...