简单地说,当使用嵌套的反应形式时,是否可能有这样的东西:
<!-- DESIRED -->
<form [formGroup]="rootFormGroup">
<custom-input formControlName="nestedFormGroup.someVariable"></custom-input>
</form>
而不是这个:
<!-- CURRENT STATE -->
<form [formGroup]="rootFormGroup">
<div formGroupName="nestedFormGroup">
<custom-input formControlName="someVariable"></custom-input>
</div>
</form>
一点上下文:我们的"custom inputs"需要控件的完整路径(以及 rootFormGroup
,尽管它已被排除在代码片段之外)以便调用某些服务,例如:
-
与根表单中的其他变量进行交叉验证 .
-
加载输入的标签
-
for
<select>
-派生自定义输入,加载选项
我们可以将后两个更改为使用名称而不是完整路径(只要我们在不同的嵌套组中不使用相同的名称两次),但交叉验证使用 rootFormGroup.get(...)
,它反过来调用路径 .
当然,可以注射两者(例如: <custom-input path="nestedFormGroup.someVariable" formControlName="someVariable">
),但这并不是非常干燥 .
出于同样的原因,我想避免使用formControl指令(例如: <custom-input path="nestedFormGroup.someVariable" [formControl]="rootFormGroup.get('nestedFormGroup.someVariable')">
)
如果推动推进,我可能会使用一些模糊的递归函数来检查源自 rootFormGroup
的任何FormGroup / FormArray,以便找到仅具有其名称的控件(而不是其完整路径),但这并不完全令人满意 .
这里没什么关键,但绝对欢迎任何帮助或评论!