angular - 如何在纯 Typescript 中生成 Escape 按键(不带 JQuery)

标签 angular typescript events

我正在尝试在 Angular 单元测试中触发 Escape 按钮按下事件。

    const event = document.createEvent('UIEvent');
    event.initUIEvent('keydown', true, true, window, 0);
    (<any>event).keyCode = 27;
    (<any>event).key = 'Escape';
    (<any>event).charCode = 27;

    document.body.dispatchEvent(event);

这根本不起作用(事件永远不会被像 event.which == 27 这样进行适当检查的监听器捕获)。

创建此类事件的正确方法是什么?

这个我也试过,没用

    const event = new Event('keydown', {bubbles: true});
    event.initEvent('keydown', true, true);
    (<any>event).keyCode = 27;
    (<any>event).key = 'Escape';
    (<any>event).charCode = 27;

    document.body.dispatchEvent(event);

最佳答案

你只需要在文档或元素上使用键盘事件

     const event = new KeyboardEvent("keydown",{
     'key': 'Escape'
     });
     document.dispatchEvent(event);

您可以使用 HostListener 对其进行测试

@HostListener('document:keydown', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
    console.log(event);
    let keyPressed = event.keyCode;
    if (keyPressed === 27) {
       console.log('Escape!');
    }
}

关于angular - 如何在纯 Typescript 中生成 Escape 按键(不带 JQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46279077/

相关文章:

angular - 增加垫子表 Angular 中垫子行之间的间隙

javascript - 插值在 angular2 中不起作用

angular - 如何根据角色启用组件/操作?

javascript - 动态创建的元素上的事件绑定(bind)?

events - 角 Dart : How do you pass an event from a Child component to a second level parent

angular - 类型 ‘Navigator' 上不存在属性蓝牙

angular - papa 可以解析的文件大小的限制是多少?

typescript - AG Grid - 抑制特定列/单元格内的行选择

javascript - 带有 jQ​​uery UI 小部件的 Typescript - 实现调用签名

python - 无法从 Qt5 中的 QWheelEvent 获取 pixelDelta