dmi*_*122 4 events typescript angular
我正在尝试在 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);
Run Code Online (Sandbox Code Playgroud)
这根本不起作用(事件永远不会被执行适当检查的侦听器捕获,例如 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);
Run Code Online (Sandbox Code Playgroud)
您只需要在文档或元素上使用键盘事件
const event = new KeyboardEvent("keydown",{
'key': 'Escape'
});
document.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
您可以使用 HostListener 进行测试
@HostListener('document:keydown', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
console.log(event);
let keyPressed = event.keyCode;
if (keyPressed === 27) {
console.log('Escape!');
}
}
Run Code Online (Sandbox Code Playgroud)