Отключить клавишу ввода при выборе значения в angular mat-select
У меня есть форма, которая слушает
enter
ключ для подтверждения
Но при добавлении получаю нежелательное поведение.
Когда я нажимаю клавишу ВВОД, чтобы выбрать значение в
mat-option
list Он также запускает проверку формы и отправляет данные.
<mat-select (keydown.enter)="enterItem($event)" autoFocus [appAutoFocus]="index===0 ? true: null"
[formControl]="parameterFormControl"
(selectionChange)="onChangeParameterChanged($event.source.value)">
<mat-option tabindex="-1"></mat-option>
<mat-option tabindex="-1" *ngFor="let val of values" [value]="val">{{val}}
</mat-option>
</mat-select>
Вот как я слушаю ввод ключа для проверки формы (в родительском компоненте):
ngOnInit(): void {
if (event.key === "Enter") {
event.stopPropagation();
if (!this.loading && !this.parametersForm.invalid && !this.parametersForm.pristine && this.projectEditable && this.formChanged) {
setTimeout(() => {
this.saveAll();
}, 300);
}
}
}
Как отключить ввод на
mat-select
? Для информации, проверка формы с использованием ключа ввода должна продолжать работать.
1 ответ
TL; DR: добавить
type="button"
к вашей кнопке отправки. Это поведение HTML по умолчанию, появившееся несколько десятилетий назад, клавиша ввода запускает кнопку отправки в форме. Это сбивает с толку, но это часть стандарта HTML.