Angular2 - Почему мой ввод с реактивной формы с атрибутом шаблона html не проходит корректную проверку? - PullRequest
0 голосов
/ 15 апреля 2020

Я борюсь с проблемой, которую не могу понять:

Мне нужно проверить поле ввода с атрибутом pattern="[0-9]+([,.][0-9])?" в angular реактивной форме с Validators.pattern, но, похоже, мой ? квантификатор в конце не работает ...

Что я хочу

Я хочу проверить числа с нуля или один десятичный максимум. Как вы можете видеть на https://regex101.com/r/2D2sww/1, регулярное выражение работает отлично.

Актуальная проблема

В моем приложении я могу ввести столько десятичных знаков, сколько захочу, без Validator.pattern, чтобы что-то сделать. Любой другой символ делает форму недействительной, поэтому мой Валидатор работает .

Вот мой код (упрощенно):

компонент. html

<form [formGroup]="myForm">
<input type="number" formControlName="myInputField" id="myInputField" pattern="[0-9]+([,.][0-9])?" required />
</form>

component.ts (Каждый импорт и объявления пропущены для ясности)

ngOnInit() {
  this.myForm = this.formBuilder.group({
      myInputField: [
          "",
          [Validators.required, Validators.pattern],
      ]
  });
}

Я уже пытался использовать Validators.pattern(/^[0-9]+([,.][0-9])?$/) и Validators.pattern("[0-9]+([,.][0-9])?") как указал в документации , но это ничего не меняет, поэтому я подозреваю, что мой Regex неверен ...

Есть идеи? Спасибо, хорошего дня:)

1 Ответ

0 голосов
/ 16 апреля 2020

Я думаю, что в вашем регулярном выражении шаблона валидатора нет ничего плохого, вы можете удалить атрибут pattern из ввода, он является избыточным, потому что вы запускаете его из файла ts: 'myInputField': new FormControl(null, [Validators.pattern('^[0-9]+([,.][0-9])?$')]).

StackBlitz

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