Как только я собрал свое приложение Angular для производства:
ng build --prod
Ни одно из моих событий клавиатуры не сработало:
chat-window.component.html:
<input type="text" class="chat-input" placeholder="Write your message here..." (keydown.enter)="onEnter($event)" (keydown)="onKeydown($event)" (focus)="onFocus($event)" [(ngModel)]="draftMessage.text" />
<span class="input-group-btn">
<button type="button" class="btn-chat" (click)="onEnter($event)">Send</button>
</span>
Приведенный выше фрагмент HTML не содержится в:
<form></form>
chat-window.component.ts:
onEnter(event: any): void {
console.log('CHAT-WINDOW: keydown.enter: event',event);
this.sendMessage();
event.preventDefault();
}
onKeydown(event: any): void {
console.log('CHAT-WINDOW: keydown: event',event);
}
КогдаПри нажатии кнопки «Ввод» внутри поля ввода ничего не происходит.Нет консольного сообщения, и сообщение не отправлено.Я добавил обработчик событий (keydown), чтобы посмотреть, запускаются ли события keydown.И ничего.
Обычно эта проблема возникала, используя только '(keydown.enter)'.Я только добавил «(keydown)», чтобы увидеть, будут ли регистрироваться какие-либо события keydown.Я также попытался удалить 'event.preventDefault ();'и до сих пор ничего не срабатывает.
Однако событие нажатия на кнопку работает, поэтому события мыши, кажется, в порядке.
В режиме разработки [localhost: 4200] все работает, как ожидалось.Другими словами, отображаются соответствующие консольные сообщения и сообщение отправляется.
Может кто-нибудь сказать мне, почему мои события клавиатуры не регистрируются, когда я использую скомпилированную версию моего приложения?
Среда:
"@angular/cli": "1.5.0",
"@angular/compiler-cli": "5.0.0",
Проверено на:
Firefox [latest version]
Chrome [latest version]
Edge [latest version]