特定按键事件的事件绑定

时间:2017-08-17 14:13:06

标签: angular

在Angular中,我可以编写<input (keyup.enter)"onEnter($event)">来检测用户何时按Enter键。

我可以使用其他键escspaceshift等来执行此操作。

但是如何检测用户何时按shift + up

是否有支持组合键的列表?(我无法在官方文档中找到)

3 个答案:

答案 0 :(得分:15)

经过一番研究后,我找到了巧妙的方法:

<!-- 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)="...">

<强>更新

探索角度来源(herehere)。

事实证明,此类事件名称的一般语法是: eventname.modifier.key
其中:
- eventname keydown keyup
- 修饰符 alt 控制转移(可以超过一个)
- 密钥KeyboardEvent.key属性

中的密钥

示例:keyup.control.zkeyup.control.backspacekeyup.shift.pageupkeyup.alt.dot

请注意某些组合可能不起作用,例如keyup.shift.tab

答案 1 :(得分:3)

您可以使用(keyup)并查看event按下了哪个键,以及shiftKey

<强> HTML

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

组件内的功能

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

答案 2 :(得分:2)

是的,你可以这样做:

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

..并在你的打字稿代码中:

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

以下是指向 PLUNKER DEMO 的链接。