如何在Angular中管理大量类似的反应形式

时间:2018-12-25 15:54:38

标签: angular reactive-forms

我正在开发一个Angular 6项目,该项目有很多形式。一个FormGroup可以包含10个以上的字段,并且可以在一个应用程序中多次重复使用。

所以,我在问如何更好地组织我的应用程序?目前,一个form.component.ts拥有200多行代码,其中约70%的表单正在创建。

是否可以将其拆分为可重复使用的部分?我尝试使用static方法创建一个类,该类返回由FormGroup制作的FormBuilder,但这似乎不起作用。

大约是

export class myClass {
  constructor(private fb: FormBuilder) {}

  static createFormGroup(): FormGroup {
    this.fb.group({
      // some stuff goes here
    });
  }
}

我不知道该如何处理,因为该实例是静态的,因此不会创建该实例。

1 个答案:

答案 0 :(得分:0)

我认为使用Dynamic Forms无疑是赢家。文档是这样的:

  

构建手工制作的表单可能既昂贵又费时,特别是如果您需要大量手工表单,它们彼此相似,并且经常更改以适应快速变化的业务和法规要求。

     

基于描述业务对象模型的元数据动态创建表单可能更经济。

您的情况在我看来完全一样。另外,我已经在上面的指南中加了行号,因此您应该在那里得到Working Example

但是,您的其他选择是:

  1. 使用静态服务,该服务将返回FormGroup,然后您可以直接以当前形式对其进行分配。从您的问题看来,这是您已经尝试过但没有成功的方法。您需要提供更多有关此方面的信息,以便让人们在这里为您提供帮助。

  2. 如Julien所建议的,您可以将FormGroup分解为较小的组件,然后将原始/父FormGroup作为@Input传递给它们。然后,他们可以进一步向这些原始/父FormControl中添加FormGroupFormGroup。请参考我创建的演示类似内容的StackBlitz eg.。随着表单大小的增加,这可能变得更加混乱。因此,在这种情况下,我建议您使用动态表单或选项1。