2017-08-17 6 views
3

角度では、ユーザがEnterキーを押したときに検出するために<input (keyup.enter)"onEnter($event)">と書くことができます。特定のキー押しイベントに対するイベントバインディング

私は他のキーescspaceshiftなど

しかし、どのように検出することで行うことができます同じことをするときにユーザーを押しshift + up

サポートされているキーの組み合わせはありますか?(私は公式ドキュメント内の任意のを見つけるcould'n)

答えて

4

は、いくつかの研究の後、私はそれを行うにはきちんとした方法を発見しました。シフトをチェックし、ブール値をtrueに設定するkeydownイベントを提案するつもりでした。次に、ブール値をfalseに設定するキーアップ関数をキーアップしましたが、矢印キーでブール値がtrueに設定されている場合はシフト+アップ状態になります。
2

あなたは(keyup)を使用して、キーが押されたためeventをチェックし、shiftKey用することができます

HTML

<input type="text" (keyup)="myFunc($event)"/> 

機能内部コンポーネント

private myFunc(event: KeyboardEvent): void { 
    if (event.key === 'ArrowUp' && event.shiftKey) { 
    // Your code 
    } 
} 
+0

: – Kevin

+1

動作しません。 'up'を押すと呼び出される関数です。 'shift' +' up'を押しても呼び出されないので、 'event.shiftKey'がtrueであるかどうかはチェックできません。 –

+1

@ taras-d残念なことに 'shift'を押しながら'(keyup.arrowup) 'を使用しているときにイベントがトリガされませんでした。私は自分の答えを更新しました。 – Arg0n

2

はい、あなたはこのようにそれを達成することができます:

<input (keyup)="onKeyUp($event)"> 

...とあなたのtypescriptですコードで:ここで

onKeyUp($event): void { 
    if ($event.shiftKey && $event.which === 38) { 
     // Place your logic here 
    } 
} 

PLUNKER DEMO作業へのリンクです。これは、私はそれを愛する動作する場合

<!-- Listen to Shift + Up --> 
<input (keyup.shift.arrowup)="..."> 

<!-- Listen to Ctrl + Shift + Down --> 
<input (keyup.control.shift.arrowdown)="..."> 

<!-- Listen to Esc within window --> 
<div (window:keyup.esc)="..."> 
+0

これは可能な解決策の1つです。しかし、おそらく、このようなものを書く方法があります。 '(keyup.shift + up)=" ... "'! –

+0

あなたは 'shift + up'ロジックをメソッドに入れなければなりません。私は私のプロジェクトで同じものを使用しています。 Ctrl + Sのための一般的なMacとWindowsソリューションの私の別の答えを見てください:https://stackoverflow.com/a/45569055/1791913 – Faisal

+1

私はそれをやりたいと思った方法を見つけました。私は私の質問を更新しました。 –

関連する問題