我在角度应用程序中使用materialize-css的芯片组件。要创建筹码,我必须按回车键。但在移动设备中,没有输入密钥。
所以我在chip的input元素上添加了textInput事件,如果用户按下逗号,它将调度enter键事件。
__element.addEventListener('textInput', function (__event) {
const keyCode = __event.data.charCodeAt(0);
const COMMA_KEY_CODE = 44;
if (keyCode == COMMA_KEY_CODE) {
__event.preventDefault();
__event.currentTarget.dispatchEvent(new KeyboardEvent('keydown', { key: "Enter" }));
}
});
按下逗号我正在接收事件,但它没有调度enter事件。
但是,如果我使用以下行调度输入键事件
__event.currentTarget.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 13 }));
表明
Argument of type '{ keyCode: number; }' is not assignable to parameter of type 'KeyboardEventInit'.
Object literal may only specify known properties, and 'keyCode' does not exist in type 'KeyboardEventInit'.
但是如果我直接在控制台上运行它,相同的代码也可以工作。
关于GitHub的问题:https://github.com/Dogfalo/materialize/issues/5722
这可以通过将keydown
事件绑定到您的输入并在事件中添加enter
键名来在Angular中实现。
<input (keydown.enter)="onKeydown($event)">
事件的定义可能是
onKeydown(event) {
//This code will run only when an enter key is pressed
}