代码之家  ›  专栏  ›  技术社区  ›  Atul

角度5:如何使用相同的指令来限制输入字段并在html的标签中显示文本

  •  0
  • Atul  · 技术社区  · 6 年前

    我创建了一个指令,只接受输入中的数字。但我也希望根据输入的值在标签中显示一些文本。我可以从指令到组件获取变量吗?

    @Directive({
      selector: '[OnlyNumber]'
    })
    
    export class OnlyNumber {
    
      regexStr = '^[0-9]*$';
      //regexStr = ".*[^0-9].*";
      constructor(private el: ElementRef) { }
    
      @Input() OnlyNumber: boolean;
      @Output() tabText: boolean;           //trying to use this for component
    
      @HostListener('keydown', ['$event']) onKeyDown(event) {
        let e = <KeyboardEvent>event;
        let keyCode = e.keyCode;
        if (this.OnlyNumber) {
          let ch = String.fromCharCode(keyCode);
          let regEx = new RegExp(this.regexStr);
          if (regEx.test(ch)){
            this.tabText = true;            //trying to use this for component
            return;
          } else {
            e.preventDefault();
          }
        }
      }
    } 
    

    //HTML格式

    <input name="salesprice" type="text" OnlyNumber="true" [(ngModel)]="salesprice" >
    

    如果tabText变量设置为true,我想显示下面的标签。请协助。

    <label>text entered.</label>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Roopesh Kumar Ramesh    6 年前

    对于只能使用数字的字段

    <input name="salesprice" type="number" OnlyNumber="true" [(ngModel)]="salesprice" >
    

    以及仅当 tabText 是你可以使用的

    <label *ngIf = "tabText">text entered.</label>