угловая 6 реактивная форма проверки формы FormGroup - PullRequest
0 голосов
/ 03 сентября 2018

Попытка добавить валидатор в зависимости от некоторых условий. Когда условие истинно, я добавляю требуемый валидатор и удаляю его, когда оно ложно.

    createReactiveForm(data: any) {
    const formGroup = new FormGroup({
        'control1': new FormControl(data.key1),
        'control2': new FormControl(data.key2)
    }, this.formValidators.bind(this)),
}


formValidators(formGroup: FormGroup){
    const control1Val: boolean = formGroup.controls['control1'].value;
    if (control1Val) {
        const control2: AbstractControl = formGroup.controls['control2'];
        constrol2.setValidators(Validators.required);
    } else {
        const control2: AbstractControl = formGroup.controls['control2'];
        constrol2.setValidators(() => null);
    }
}
  1. Метод formValidators () вызывается бесконечное число раз - делаю ли я здесь что-то не так?

  2. Когда условие истинно, оно добавляет валидаторы и отображает ошибку. Но когда условие ложно, валидаторы удаляются, но ошибка в элементе управления все еще существует - в чем причина?

  3. Это хороший способ связать метод formValidators () в formGroup?

Помогите мне в этом.

1 Ответ

0 голосов
/ 03 сентября 2018
  1. Нет, он вызывается при каждом обнаружении изменений / изменении управления.
  2. Звоните control.setErrors(null).
  3. Второй параметр ожидает функцию. С вашим кодом проблем нет.

Функция Validator должна возвращать объект error или null . Я не рекомендую помещать вашу логику в функцию валидатора, так как это не то место. Вы можете прослушать control1 valueChanges и переместить логику туда. Таким образом, вы оптимизируете код для запуска только при изменении значения control1.

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