如何解决“类型为'number'的参数不能分配给类型为'string | RegExp'的参数。”

时间:2019-07-11 16:17:27

标签: javascript angular typescript

我在Angular中创建了一个表单,并试图阻止用户键入“ e”作为数字。我知道我必须先将用户输入转换为字符串,然后检查“ e”,然后将其转换回数字。

(我还想知道如何将'e'替换为空字符串,这样它就不会出现在输入文本中)

this.signupForm = new FormGroup({
      'accountType': new FormControl('Personal', Validators.required),
      'name': new FormControl(null),
      'email': new FormControl(null,[Validators.required, Validators.email]),
      'city': new FormControl(null),
      'country': new FormControl(null, Validators.required),
      'zipCode': new FormControl(null, [Validators.pattern("[0-9]*"), Validators.pattern(e*), Validators.maxLength(5)]), 
      'dia': new FormControl(null)

    });

1 个答案:

答案 0 :(得分:0)

验证器仅影响表单的有效性,如下所示:

// True if it complies with the validators, False if not
this.signupForm.valid

如果您要限制输入,则应执行以下操作:

在component.ts中:

public inputValidator(event: any) {
    this.signupForm.controls['zipCode'].setValue(event.target.value.replace(/[^0-9]*/g, "")); 
  }

然后在html中输入

<input formControlName="zipCode" (input)="inputValidator($event)" type="text" maxlength="5" >

“ e”验证器不是必需的,因为正则表达式[[Validators.pattern(“ [0-9] *”))已经对其进行了过滤