我正在开发一个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
});
}
}
我不知道该如何处理,因为该实例是静态的,因此不会创建该实例。
答案 0 :(得分:0)
我认为使用Dynamic Forms无疑是赢家。文档是这样的:
构建手工制作的表单可能既昂贵又费时,特别是如果您需要大量手工表单,它们彼此相似,并且经常更改以适应快速变化的业务和法规要求。
基于描述业务对象模型的元数据动态创建表单可能更经济。
您的情况在我看来完全一样。另外,我已经在上面的指南中加了行号,因此您应该在那里得到Working Example。
但是,您的其他选择是:
使用静态服务,该服务将返回FormGroup
,然后您可以直接以当前形式对其进行分配。从您的问题看来,这是您已经尝试过但没有成功的方法。您需要提供更多有关此方面的信息,以便让人们在这里为您提供帮助。
如Julien所建议的,您可以将FormGroup
分解为较小的组件,然后将原始/父FormGroup作为@Input
传递给它们。然后,他们可以进一步向这些原始/父FormControl
中添加FormGroup
或FormGroup
。请参考我创建的演示类似内容的StackBlitz eg.。随着表单大小的增加,这可能变得更加混乱。因此,在这种情况下,我建议您使用动态表单或选项1。