在Angular中,我可以编写<input (keyup.enter)"onEnter($event)">
来检测用户何时按Enter键。
我可以使用其他键esc
,space
,shift
等来执行此操作。
但是如何检测用户何时按shift
+ up
?
是否有支持组合键的列表?(我无法在官方文档中找到)
答案 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)="...">
<强>更新强>
事实证明,此类事件名称的一般语法是: eventname.modifier.key 。
其中:
- eventname : keydown 或 keyup
- 修饰符: alt ,控制,元或转移(可以超过一个)
- 密钥:KeyboardEvent.key
属性
示例:keyup.control.z
,keyup.control.backspace
,keyup.shift.pageup
,keyup.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 的链接。