Directive to upper case input fields

后端 未结 5 865
北荒
北荒 2021-01-03 06:04

I want to use a directive to transform all input data to uppercase. To achieve that, I create this custom directive :

@Directive({
  selector: \'[appToUpperC         


        
5条回答
  •  耶瑟儿~
    2021-01-03 07:01

    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);
        }
    
      }
    
    }
    

提交回复
热议问题