使用重用结构f componentsnets创建FormGroup

时间:2018-03-12 11:03:02

标签: angular typescript

我需要创建一些具有相同定义的FormGroup。因此,我用结构创建了一个const:

export const predefinedFormGroup = {
  'field1': new FormControl(null, [Validators.required]),
  'field2': new FormControl(null, [Validators.required]),
  'field3': new FormControl(null, [Validators.required]),
  'field4': new FormControl(null)
};

我需要这个作为对象,因为我不仅使用它来创建表单组,我还在字段上进行一些迭代以用于其他目的。

然后,我使用此方法创建FormGroup:

this.form = new FormGroup(predefinedFormGroup)

它有效,但有一个大问题:

当在字段上使用类型信息时,成本正在发生变化,因为TypeScript通过引用传递了predefinedFormGroup,所以下次我使用保存行this.form = new FormGroup(predefinedFormGroup)创建另一个具有相同结构的formGroup时,表单与第一个formGroup中填充的值一起使用。

我知道我可以使用form.reset()来清除值,但我确信有更好的方法可以通过val将结构传递给FormGroup。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以创建工厂功能而不是变量

export const predefinedFormGroupFactory = () => ({
    field1: new FormControl(null, [...]),
    field2: new FormControl(null, [...])
})

并像

一样使用它
const predefinedGroup = predefinedFormGroupFactory();
this.form = new FormGroup(predefinedGroup);