Could be this the best angular 2-way to block non number keys using directive?
import {Directive,HostListener} from '@angular/core';
@Directive({
selector: '[blockNonNumber]'
})
export class blockNonNumberDirective {
@HostListener('keydown', ['$event']) onKeyDown(event: any) {
let keyCode = [8, 9, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 110];
if ( keyCode.indexOf(event.which) === -1) event.preventDefault();
}
}
I am using this to allow user to enter num only,
export class blockNonNumberDirective {
constructor() { }
@HostListener('keypress') onkeypress(e){
let event = e || window.event;
if(event){
return this.isNumberKey(event);
}
}
isNumberKey(event){
let charCode = (event.which) ? event.which : event.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)){
return false;
}
return true;
}
}