Кажется, добавление этого к вашему компоненту, чтобы остановить распространение по умолчанию на событии 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) вывод срабатывает через шаблон.