I want to use a directive to transform all input data to uppercase. To achieve that, I create this custom directive :
@Directive({
selector: \'[appToUpperC
Pankaj's idea it's better than create a directive. You only must send data.toUpperCase(). Anyway if you want use a directive like this. Be careful, not only we must use preventDefault(), we must dispatch event change
import { Directive,HostListener } from '@angular/core';
@Directive({
selector: '[appToUpperCase]'
})
export class ToUpperCaseDirective {
constructor() { }
@HostListener('keydown', ['$event']) onKeyDown(event:KeyboardEvent) {
if (event.keyCode>32 && event.keyCode<128)
{
event.target['value']+=event.key.toUpperCase();
event.preventDefault(); //stop propagation
//must create a "input" event, if not, there are no change in your value
var evt = document.createEvent("HTMLEvents");
evt.initEvent("input", false, true);
event.target.dispatchEvent(evt);
}
}
}