【问题标题】:How to set focus on the control from angular diretive如何从角度指令集中控制控件
【发布时间】:2021-08-19 12:06:53
【问题描述】:

我创建了一个用于验证输入值的指令,如果值不在某个限制之下,我想清除该值并再次将焦点设置到该控件

    @Directive({
      selector: '[validate-onblur-search]'
    })
    export class ValidateOnBlurDirectiveSearch {
      constructor(public formControl: NgControl,
        private toastr: ToastrService,
        private element: ElementRef) {
      }
      @Input() isAgreement: boolean;
      @HostListener('focusout', ['$event'])
      onBlur($event) {
        if ($event.target.value) {
          switch (this.formControl.name) {
            case 'from_township':
              // ^\h*(?:(?:\d|[1-9]\d|1[0-5]\d|16[0-7])(?:\.\d{1,2})?|168(?:\.0{1,2})?)[NS]?$
              // var regix = new RegExp(/\b([1-9]|[1-9][0-9]|1[01][0-9]|12[0-1])(\.\d{1,2})?[N,S]?$/);
              var regix = new RegExp(/^\h*(?:(?:\d|[1-9]\d|1[0-5]\d|16[0-7])(?:\.\d{1,2})?|168(?:\.0{1,2})?)[NS]?$/);
              if (!regix.test(this.formControl.value)) {
                this.toastr.warning('Accept number and decimal.Max no is 168 followed by N or S');
              }
              break;
            case 'from_range':
              var regix = new RegExp(/^\s*(?:(?:\d|[1-9]\d|1[0-1]\d|120)|121 ?)[NS]?$/);
              if (!regix.test(this.formControl.value)) {
                this.toastr.warning('Max no is 121 followed by N or S');
                // this.formControl.setValue();
                this.formControl.control.setValue(null, { emitEvent: false });
              }
              break;
          }
        }
      }
    }

除了将焦点设置为控制之外的所有工作。谁能建议我在哪里失踪?

【问题讨论】:

    标签: angular angular-directive


    【解决方案1】:

    this.element.nativeElement.focus();

    所以在你的例子中它可能看起来像:

    if (!regix.test(this.formControl.value)) {
      this.toastr.warning('Max no is 121 followed by N or S');
      // this.formControl.setValue();
      this.formControl.control.setValue(null, { emitEvent: false });
    
      this.element.nativeElement.focus();
    }
    break;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      相关资源
      最近更新 更多