3

简单地说,当使用嵌套的反应形式时,是否有可能有这样的东西:

<!-- 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>

一点上下文:我们的“自定义输入”需要控件的完整路径(以及rootFormGroup,尽管它已被排除在代码段之外)才能调用一些服务,例如:

  • 与根形式的其他变量进行交叉验证。
  • 加载输入的标签
  • 对于 -<select>派生的自定义输入,加载选项

我们可以将后两者更改为使用名称而不是完整路径(只要我们不在不同的嵌套组中使用相同的名称两次),但交叉验证使用rootFormGroup.get(...),这反过来又调用路径。

当然,可以同时注入两者(例如 : <custom-input path="nestedFormGroup.someVariable" formControlName="someVariable">),但这并不是非常干燥。

出于同样的原因,我想避免使用 formControl 指令(例如<custom-input path="nestedFormGroup.someVariable" [formControl]="rootFormGroup.get('nestedFormGroup.someVariable')">:)

如果迫在眉睫,我可能可以使用一些模糊的递归函数来检查任何源自的 FormGroup/FormArrayrootFormGroup以便找到只有其名称(而不是其完整路径)的控件,但这也不完全令人满意。

这里没有什么重要的,但绝对欢迎任何帮助或评论!

4

0 回答 0