Отображать сообщения проверки при изменении formcontrol

#angular #angular2-forms #angular2-changedetection

#angular #angular2-формы #angular2-обнаружение изменений

Вопрос:

Шаги:

  1. Перейти к Plunker
  2. Перейдите в Name поле ввода
  3. Оставить Name пустым
  4. Перейдите к Email amp; Введите
  5. При вводе появляется ошибка требуемого поля для Name
  6. Я хочу, чтобы эта ошибка появлялась при переходе от Name к Email , а не после ввода Email

Как я могу это сделать?

Комментарии:

1. this.myForm.statusChanges.subscribe ?

2. Нет. Все то же поведение: (

3. Для меня неясно, о чем идет речь. Как вы думаете, почему valueChanges это связано с ошибками проверки?

4. Я следую приведенному здесь примеру . У ngOnInit() меня есть buildform() метод, и я подписываюсь на изменения формы через valueChanges или statusChanges . Теперь моя логика проверки и логика для сообщений об ошибках находятся внутри этого onValueChanged метода. Проверка работает нормально, но она запускается не так, как ожидалось

Ответ №1:

Проблема в том, что когда я перехожу от первого элемента управления вводом ко второму элементу управления, ничего не вводя, в идеале он должен выдавать «требуемую» ошибку.

Почему вы не используете встроенные средства проверки для required? http://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html#built-in-validators

  <form novalidate>
  <input type="text" name="name" ngModel required>
  <input type="text" name="street" ngModel minlength="3">
  <input type="text" name="city" ngModel maxlength="10">
  <input type="text" name="zip" ngModel pattern="[A-Za-z]{5}">
</form>
  

Используйте механизм проверки из Angular.

Комментарии:

1. Я использую механизм проверки из Angular

2. this.myForm = this.fb.group({ name: ['', Validators.compose([Validators.required, Validators.pattern('^[A-Za-z .\-] $')])], contact: this.fb.group({ mob: ['', Validators.compose([Validators.required, Validators.minLength(10), Validators.pattern('^[0-9]{10}$')])], email: ['', Validators.compose([Validators.required, EmailValidator.isValidMailFormat])] }) });

3. Разница в вашей форме и моей заключается в том, что я использую формы, управляемые моделью

4. Это не имеет значения. Если у вас есть необходимый валидатор, он выдаст вам ошибки при управлении. «Вы сказали, что теперь моя логика проверки и логика для сообщений об ошибках находятся внутри этого метода OnValueChanged», так что, может быть, вы просто очистите свои ошибки где-нибудь в этой логике. Можете ли вы предоставить plunker с вашим примером?