Jakie są opcje (keyup) w Angular2?


Odpowiedzi:


57

Oto opcje aktualnie udokumentowane w testach: ctrl, shift, enter i escape. Oto kilka ważnych przykładów powiązań klawiszy:

keydown.control.shift.enter
keydown.control.esc

Możesz to śledzić tutaj, gdy nie istnieją żadne oficjalne dokumenty, ale powinny one wkrótce zostać opublikowane.


5
Wow, ta odpowiedź została udzielona, ​​gdy Angular był w swojej dwudziestej wersji alfa i nadal działa.
JP ten Berge



23

Szukałem sposobu na powiązanie z wieloma kluczowymi wydarzeniami - w szczególności Shift + Enter - ale nie mogłem znaleźć żadnych dobrych zasobów w Internecie. Ale po zalogowaniu się powiązania keydown

<textarea (keydown)=onKeydownEvent($event)></textarea>

Odkryłem, że zdarzenie związane z klawiaturą dostarczyło wszystkich informacji potrzebnych do wykrycia Shift + Enter. Okazuje się, że $eventzwraca dość szczegółowe zdarzenie KeyboardEvent .

onKeydownEvent(event: KeyboardEvent): void {
   if (event.keyCode === 13 && event.shiftKey) {
       // On 'Shift+Enter' do this...
   }
}

Istnieją również flagi dla CtrlKey, AltKey i MetaKey (tj. Klawisz Command na Macu).

Nie ma potrzeby stosowania KeyEventsPlugin, JQuery ani czystego wiązania JS.



13

Dziś napotkałem ten sam problem.

Są słabo udokumentowane, istnieje otwarty problem.

Niektóre dla klucza , jak spacja:

<input (keyup.space)="doSomething()">
<input (keyup.spacebar)="doSomething()">  

Niektóre dla keydown
(może działać również dla keyup):

<input (keydown.enter)="...">
<input (keydown.a)="...">
<input (keydown.esc)="...">
<input (keydown.alt)="...">
<input (keydown.shift.esc)="...">
<input (keydown.shift.arrowdown)="...">
<input (keydown.f4)="...">

Wszystkie powyższe pochodzą z poniższych linków:

https://github.com/angular/angular/issues/18870
https://github.com/angular/angular/issues/8273
https://github.com/angular/angular/blob/master/packages/platform- browser / src / dom / events / key_events.ts
https://alligator.io/angular/binding-keyup-keydown-events/


11

możesz dodać takie zdarzenie keyup

template: `
  <input (keyup)="onKey($event)">
  <p>{{values}}</p>
`

w komponencie, zakoduj jak poniżej

export class KeyUpComponent_v1 {
  values = '';

  onKey(event:any) { // without type info
    this.values += event.target.value + ' | ';
  }
}

1
To nie działa w przypadku liczb. Zdarzenie keyup nie jest wyzwalane, jeśli wpiszę liczbę w polu wejściowym. Co możemy z tym zrobić?
monica

2

Jeśli keyup zdarzenie jest poza CTRL, SHIFT, ENTERi ESCwspornika, wystarczy użyć instrukcji @Md Ayub Ali Sarker za. Jedynym pseudo-zdarzeniem dotyczącym keyup wspomnianym tutaj w dokumentach kątowych https://angular.io/docs/ts/latest/guide/user-input.html jest ENTERklucz. Nie ma jeszcze pseudo-zdarzeń keyup dla klawiszy numerycznych i alfabetów.


Przepraszam Robercie. Nie miałem problemów z nawigacją do dokumentów Angular za pomocą linku. To działa.
Benny64

Tak, teraz działa. Prawdopodobnie problem był po mojej stronie. Przepraszam.
robert

1

keyCodeJest przestarzała można użyć keywłasności wKeyboardEvent

<textarea (keydown)=onKeydownEvent($event)></textarea>

Maszynopis:

onKeydownEvent($event: KeyboardEvent){

    // you can use the following for checkig enter key pressed or not
    if ($event.key === 'Enter') {
      console.log($event.key); // Enter
    }


    if ($event.key === 'Enter' && event.shiftKey) {
           //This is 'Shift+Enter' 
    }
}

0

Tak jak z wydarzeniami

(keydown)="$event.keyCode != 32 ? $event:$event.preventDefault()"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.