2015-12-08 2 views
33

Можно ли узнать, какая клавиша была нажата при нажатии (нажатие) в Angular 2?Получить нажатую клавишу (нажатие) angular2

E.g.

<input type=text (keypress)=eventHandler()/> 

public eventHandler() { 
    //Some code 
    console.log(keyPressed); 
} 

Редактировать: Кажется, мои соглашения об именах были немного выключены. Я не имел в виду AngularJS 2, я имел в виду Angular 2.0 с машинописным текстом.

+0

вы используете angularjs? – azad

ответ

67

Провод $event к вашему обработчику событий. $event является DOM KeyboardEvent.

<input type=text (keypress)="eventHandler($event)"> 

eventHandler(event) { 
    console.log(event, event.keyCode, event.keyIdentifier); 
} 

Если вы знаете, какой KeyboardEvent собственности вы хотите, вы можете передать, что в обработчик события:

<input type=text (keypress)="eventHandler($event.keyCode)"> 

eventHandler(keyCode) {...} 
+8

Это не определяет все события. например, не клавиши со стрелками или не убежать. но вы можете использовать (keydown), чтобы получить все из них. –

+2

event.key, похоже, теперь используется, он дает строку типа «0», «a», «ArrowLeft» и т. Д. Использование event.keyCode обескуражено. – bob

+0

Функция AvoidSpace (событие: любое) { var k = event? event.which: window.event.keyCode; if (k == 32) return false; } Выше приведен код, который я использовал для предотвращения ввода пользователем пробелов в поле ввода. Я реализую это в угловом2. Я получаю сообщение об ошибке по ключевому коду, говоря: «Свойство« keycode »не существует в типе« Событие ». any». Что мне делать? –

12
@Component({ 
    selector: 'key-up3', 
    template: ` 
    <input #box (keyup.enter)="onEnter(box.value)"> 
    <p>{{value}}</p> 
    ` 
}) 
export class KeyUpComponent_v3 { 
    value = ''; 
    onEnter(value: string) { this.value = value; } 
} 

Или использовать, как это ..

<input #box (keyup.enter)="onSubmit(form.value)"> 
<form [formGroup]="form" (ngSubmit)="onSubmit(form.value)"> 
+1

Хорошее решение. Нет необходимости проверять коды клавиш и т. Д. В компоненте. – perry

2

основе комментарий, сделанный по ответе:

Это не определяет все события. например, не клавиши со стрелками или не убежать. но вы можете использовать (keydown), чтобы получить все из них.

Лучшее решение, чтобы получить все события как забой и удалять или любой другой ключ, просто использовать (вход)

<input type=text (input)="eventHandler($event.keyCode)"> 

eventHandler(keyCode) {...}