Welche Optionen gibt es für (Keyup) in Angular2?


Antworten:


57

Dies sind die Optionen, die derzeit in den Tests dokumentiert sind: Strg, Umschalt, Eingabe und Escape. Dies sind einige gültige Beispiele für Schlüsselbindungen:

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

Sie können dies hier verfolgen , solange keine offiziellen Dokumente vorhanden sind, diese sollten jedoch bald veröffentlicht werden.


5
Wow, diese Antwort wurde gegeben, als Angular in seinem 20. Alpha war und es funktioniert noch heute.
JP Ten Berge



23

Ich suchte nach einer Möglichkeit, mich an mehrere wichtige Ereignisse zu binden - insbesondere Umschalt + Eingabetaste -, konnte jedoch online keine guten Ressourcen finden. Aber nach dem Protokollieren der Keydown-Bindung

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

Ich stellte fest, dass das Tastaturereignis alle Informationen lieferte, die ich zum Erkennen von Umschalt + Eingabetaste benötigte. Es stellt sich heraus, dass $eventein ziemlich detailliertes KeyboardEvent zurückgegeben wird .

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

Es gibt auch Flags für CtrlKey, AltKey und MetaKey (dh Befehlstaste auf dem Mac).

KeyEventsPlugin, JQuery oder eine reine JS-Bindung sind nicht erforderlich.



12

Habe heute das gleiche Problem getroffen.

Diese sind schlecht dokumentiert, ein offenes Problem besteht.

Einige für Keyup , wie Leerzeichen:

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

Einige für Keydown
(funktioniert möglicherweise auch für Keyup):

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

Alle oben genannten sind von unten Links:

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

Sie können ein Keyup-Ereignis wie dieses hinzufügen

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

Codieren Sie in Component einige wie unten

export class KeyUpComponent_v1 {
  values = '';

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

1
Dies funktioniert nicht für Zahlen. Das Keyup-Ereignis wird nicht ausgelöst, wenn ich Nummer in das Eingabefeld eingebe. Was können wir dafür tun?
Monica

2

Wenn Ihr keyup Ereignis außerhalb der ist CTRL, SHIFT, ENTERund ESCHalter, benutzen Sie einfach @Md Ayub Ali Sarker Leitfaden. Das einzige Keyup-Pseudo-Ereignis, das hier in den eckigen Dokumenten https://angular.io/docs/ts/latest/guide/user-input.html erwähnt wird, ist der ENTERSchlüssel. Es gibt noch keine Keyup-Pseudoereignisse für Zifferntasten und Alphabete.


Entschuldigung, Robert. Ich hatte keine Probleme beim Navigieren zu Angular-Dokumenten über den Link. Es klappt.
Benny64

Ja, es funktioniert jetzt. Wahrscheinlich war das Problem auf meiner Seite. Es tut uns leid.
Robert

0

Das keyCodeist veraltet, Sie können keyEigenschaft in der verwendenKeyboardEvent

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

Typoskript:

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

Eins wie bei Events

(keydown)="$event.keyCode != 32 ? $event:$event.preventDefault()"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.