我试图编写一个指令,限制用户在输入文本控件中输入仅数字字符。
@Directive({
selector: '[numericControl]'
})
export class NumericControlDirective {
contructor(
private el: ElementRef,
) {}
@HostListener('input', ['$event'])
onInput(e: any) {
if (e.which < 48 || e.which > 57) {
e.preventDefault();
}
}
}
用法
<input type="text" placeholder="Volume" numericControl />
但它不起作用,任何人遇到过这个问题?
答案 0 :(得分:4)
使用键盘事件类型 - keydown
或keypress
:
@HostListener('keydown', ['$event'])
onInput(e: any) {
if (e.which < 48 || e.which > 57) {
e.preventDefault();
}
}
答案 1 :(得分:0)
您也可以使用
@HostListener('keydown', ['$event']) onKeyDown(event) {
let e = <KeyboardEvent>event;
if (e.which < 48 || e.which > 57) {
e.preventDefault();
}
}