我可以使用空白地址的一行初始化并进行验证吗?



我最近开始使用 Angular 2 和响应式表单。我想要完成的很简单:在表单中创建一个数组,并让用户将新对象推送到其中(比如用户可以添加新地址的用户地址列表 - 标准 FormArray(。这很简单(并且在文档中都很好地描述了(,但我也希望能够自动验证用户的输入。我知道我可以通过简单地推动这样的小组来做到这一点:

this.formBuilder.group({
    country: ['', Validators.required],
    city: ['', Validators.required],
    ...
})

但是我有一个表示地址实例的模型,我想像这样使用它:

this.formBuilder.group(new Address())

这实际上就是我现在的做法(无需验证(。

我的

问题是:我可以使用空白地址的这一行初始化并以某种方式进行验证,而无需在每次推送新的空白地址时显式定义我的验证器?

如果我的问题不够清楚,我会回答你所有的问题。

这可能是您的一个选项:

this.formBuilder.group(new Address(),
                       {validator: (fg: FormGroup) => this.attachValidators(fg)})
基本上设置一个自定义验证程序,该验证程序遍

历地址集合的各个控件,并根据需要设置其各个验证程序属性。见下文:

//helper method
private attachValidators(address: FormGroup)/*: ValidationErrors */ {
    for (let ctrlName of Object.keys(address.controls)) {
        address.get(ctrlName).setValidators(Validators.required);
    }
}

可能太多了,如果你考虑到验证者的重复分配

最新更新