3

我正在构建一个表单,用户可以在其中设置付款选项。有一个下拉菜单可以选择使用哪种付款方式。对于每种付款方式,都有一个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但是,只要所选付款方式有效,表格就应该有效。

4

2 回答 2

2

我建议编写一个自定义的根级FromGroup验证器。您基本上有一个定制的验证要求,它需要一个定制的验证器。

验证器可以在整个FormGroups和单个上工作FormControls,因为它们都是引擎盖下的AbstractControls 。

这应该为您指明正确的方向

编辑:对于任何寻求快速答案的人来说,这里有一个 stackblitz:嵌套表单验证

于 2019-01-04T10:24:26.540 回答
1

为什么不禁用不需要的控件 - 这样它们就不会得到验证?

于 2019-05-26T20:52:23.843 回答