Как исправить «Аргумент типа 'число' не может быть назначен параметру типа 'строка | RegExp'." - PullRequest
0 голосов
/ 11 июля 2019

Я создал форму в Angular, и я пытаюсь запретить пользователю вводить '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 голосов
/ 11 июля 2019

Валидаторы влияют только на действительность формы следующим образом:

// 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] *")) уже фильтрует его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...