Угловые 7 форм - условно требуется FormGroup - PullRequest
0 голосов
/ 04 января 2019

Я создаю форму, в которой пользователь может установить способы оплаты. В раскрывающемся списке можно выбрать способ оплаты. Для каждого способа оплаты есть FormGroup с опциями для выбранного метода:

form: FormGroup = new FormGroup({
        method: new FormControl('paypal', {
            validators: [
                Validators.required,
            ],
        }),
        paypal: new FormGroup({
            email: new FormControl(null, {
                validators: [
                    Validators.required,
                    Validators.pattern(EMAIL_PATTERN)
                ],
            }),
        }),
        other: new FormGroup({
            email: new FormControl(null, {
                validators: [
                    Validators.required,
                    Validators.pattern(EMAIL_PATTERN)
                ],
            }),
        }),
    });

Проблема здесь в том, что форма будет действительной, только если оба FormGroups действительны.

Но форма должна быть действительной, как только FormGroup для выбранного метода оплаты будет действительным.

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Почему бы не отключить ненужные элементы управления - тогда они не будут проверены?

0 голосов
/ 04 января 2019

Я бы предложил написать собственный валидатор корневого уровня FromGroup.По сути, у вас есть требование проверки на заказ, и для него требуется специальный валидатор.

Валидаторы могут работать как на целых FormGroups, так и на отдельных FormControls, поскольку они оба AbstractControls подкапюшон.

Это должно указать вам правильное направление

Редактировать: для тех, кто ищет быстрый ответ, вот стэкблиц: проверка вложенной формы

...