angular - 用于 KeyCommands 的 @HostListener 不起作用 [Electron,Angular]

标签 angular electron

我对 Electron 和 Angular 还很陌生,正在尝试编写一个小应用程序。在我的应用程序中,我想捕捉一些通用的键盘命令。为了捕捉事件,我编写了一个指令,但无论我做什么,应用程序都不会对任何用户输入使用react。这可能是使用 Angular 和 Electron 的问题,还是我在使用 Angular 时犯了一个简单的错误?

  • 指令在 app-module
  • 中声明
  • 指令附加到特定组件(简单的一页)
  •     import {Directive, HostListener} from '@angular/core';
    
    
        @Directive({
          selector: '[appUserinputControl]'
        })
    
        export class UserinputControlDirective {
    
          @HostListener('document:keydown', ['$event']) onKeyDown(res) {
            console.log('Key', res);
          }
    
          constructor() {
          }
    
        }
    

    该代码应该将 keydown-events 记录到控制台,但它什么也不做,也不会出现错误。

    最佳答案

    我认为您缺少的一点是您使用了 document.keydown 而不是 window.keydown。

        @HostListener('window:keydown', ['$event'])
        keyEvent(event: KeyboardEvent) {
       console.log(event)
    }
    

    上面的例子应该可以工作。

    关于angular - 用于 KeyCommands 的 @HostListener 不起作用 [Electron,Angular],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873866/

    相关文章:

    javascript - JavaScript 中的实体和 DTO

    javascript - 带 Electron 的白色闪光

    vue.js - Vue 2.0.1和Electron-可视Flash

    node.js - 无法使用 npm 安装 zerorpc

    amazon-web-services - 从 EndPoint LocalStorage AWS Cognito 获取访问 token

    javascript - Angular 4/Angular Material 2 - Sidenav 未定义。组件声明不包含这样的成员

    javascript - Angular 看不到我组件的选择器

    angular - 在组件中注入(inject) http 拦截器

    angular - APP_INITIALIZER 不阻止导入的模块

    typescript - 我们什么时候在 Angular 2 中使用提供者?