Определите несколько средств проверки для одного и того же поля с разными параметрами updateOn

#angular #angular-forms

#angular #angular-формы

Вопрос:

Мне нужно проверить форму создания пользователя. Я должен проверить электронную почту для 2 сценариев:

  1. это необходимо

  2. пользователь может получать электронную почту только из определенных доменов (например, только из gmail).

Для первого сценария мне нужно проверить «изменение», для второго сценария для события «размытие». Проблема в том, что я не могу проверить одно и то же поле для разных событий. По крайней мере, я не знаю, как это предполагается сделать. Мне нужно что-то вроде этого:

 this.userForm = this.formBuilder.group({
        email: new FormControl("", {validators: Validators.required, updateOn: "change"}),
        email: new FormControl("", {validators: validateEmail, updateOn: "blur"}),

        ... // more fields
});
  

Есть идеи, как этого добиться?

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

1. из angular docs, добавление нескольких (и, возможно, пользовательских) валидаторов

2. Да, но это для одного и того же события.

3. Я думаю, что вы можете «пропустить» Validators.required и имитировать «вручную» эту проверку как <div *ngIf="!formBuilder.get('email').value">Required</div>

4. Можете ли вы указать какой-либо сценарий, в котором вам нужно применить эти несколько событий в одном поле?

5. У меня такая же проблема. Я хочу один валидатор при наборе текста и один после размытия.