angular - HostListener 分析组合按键

标签 angular typescript

我正在尝试跟踪用户何时使用键盘按下 Shift+Tab 组合键,但我无法触发该事件

@HostListener('keyup', ['$event'])
@HostListener('keydown', ['$event'])

onkeyup(event) {
  if (event.keyCode == 16 && event.keyCode == 9) {
    this.isShift = true;
    console.log("On Keyup " + event.keyCode);
  }
}

onkeydown(event) {
  console.log("On KeyDown" + event.keyCode);
}

最佳答案

尽管 Frank Modica 的解决方案有效,但使用 Angular's key event filtering and pseudo-events将是一个更具可读性和更清晰的解决方案:

@Directive({
    selector: '[keyHandler]'
})
export class KeyHandlerDirective {

    @HostListener('keydown.shift.tab', ['$event'])
    onKeyDown(e) {
        // optionally use preventDefault() if your combination
        // triggers other events (moving focus in case of Shift+Tab)
        // e.preventDefault();
        console.log('shift and tab');
    }
}

// in template:
<input type="text" keyHandler />

可以找到有关伪事件如何工作的更多示例 here .

关于angular - HostListener 分析组合按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44369704/

相关文章:

javascript - Require.js 单例到 TypeScript

reactjs - 导出变量 'store' 具有或正在使用来自外部模块错误 Redux 工具包和 redux 的名称 '$CombinedState'

reactjs - 如何在React应用程序中知道上传文件的类型

angular - 如何使用 Keycloak 获取当前用户名?

angular - 循环遍历具有空字段的 typescript 对象

css - Angular 2通过id更改css

reactjs - typescript 错误 TS2322 : Type 'Option' is not assignable to type '(string & Option) | (number & Option) | (readonly string[] & Option)'

javascript - 如何通过 Angular 单选按钮启用或禁用提交按钮

angular - 如何在 angular4 单元测试中忽略第三方组件的 html 标签?

javascript - Angular 访问数组中另一个 ngFor 上的 ngFor 索引