我在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)
});
答案 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] *”))已经对其进行了过滤