Directive to upper case input fields

后端 未结 5 860
北荒
北荒 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 06:57

    import { Directive, ElementRef, HostListener } from '@angular/core';
    
    @Directive({
      selector: '[lowercaser]'
    })
    export class LowerCaserDirective {
    
      lastValue: string;
    
      constructor(public ref: ElementRef) {
      }
    
      @HostListener('input', ['$event']) onInput(event) {
        const resEventValue = event.target.value.toLowerCase();
        // Avoid max call
        if (!this.lastValue || (this.lastValue && event.target.value.length > 0 && this.lastValue !== resEventValue)) {
          this.lastValue = this.ref.nativeElement.value = resEventValue;
          // Propagation
          const evt = document.createEvent('HTMLEvents');
          evt.initEvent('input', false, true);
          event.target.dispatchEvent(evt);
        }
      }
    
    }
    

提交回复
热议问题