2017-02-15 3 views
2

Как я могу обработать событие нажатия клавиш Tab в Angular 2. Я взял это из DOC of Angular, чтобы получить keyCode, он хорошо работает, когда я нажимаю другие клавиши, но когда я нажимаю Tab, ничего не происходит ,Событие с вкладкой Handle в Angular 2

import { Component } from '@angular/core'; 

@Component({ 
selector: 'my-app', 
template: `<input (keyup)="onKey($event)"> 
      <p>{{values}}</p>` 
}) 

export class AppComponent { 
    values = ''; 
    onKey(event: any) { 
    this.values += event.keyCode+ ' | '; 
    } 
} 

Кроме того, это правильный способ сделать это в угловых 2

<input ng-keydown="($event.keyCode == 9) && 
     signal('something')" /> 

ответ

9
<input (keydown.Tab)="onKey($event)"> 
+0

Спасибо! Могу ли я также использовать его в элементе div? – freeNinja

+0

Вам нужно добавить 'tabundex =" 0 ", чтобы div мог получать фокус и события клавиатуры. –

+0

Большое вам спасибо! это подходит для меня. Есть ли способ предотвратить события по умолчанию Tab. event.preventDefault()? – freeNinja

0
<input (keypress)="someFunction($event.target.value)"/> 
0

У меня была аналогичная проблема. Сначала я попытался использовать $event в шаблоне, но после некоторого чтения here кажется, что минус $event - это не то, что Angular team поощряет (см. Ссылку для подробностей). Они рекомендуют использовать опорные переменные шаблона. Это было хорошо, пока я не попытался использовать вкладку, и я получил то, что получал @freeNinja; вкладка будет работать, но затем направьте фокус на верхнюю часть страницы. Ответ @ Günter Zöchbauer в комментариях выше работал для меня. Добавление false после вызова метода остановило передачу фокуса. (keydown.tab)="saveEntry(i, newCost.value); false

Смежные вопросы