递归 ReactiveForm 在模板中找不到 formGroups

Recursive ReactiveForm cannot find formGroups inside of template

我正在使用元数据对象动态创建一个非常大的表单(约 400 个输入,尽管 stackblitz 示例中显示了一个小示例)。我需要使用元数据结构将特定于输入的信息携带到输入(即输入类型、select 选项、步长等)。当我的 html ng-template 在 a 和随后的内部递归调用时,无法识别父表单。当我超过初始递归级别时,ReactiveForm 无法追踪到所需的 formGroup。

本质上,formGroupName 似乎无法遍历递归模板的级别。

我一直在努力让这个功能发挥作用,但无济于事。

我有一个 stackblitz 示例来说明我正在尝试做的事情。

https://stackblitz.com/edit/angular-jndvkb

任何帮助找出为什么通过 FormGroup 的路径在模板内部不起作用的帮助将不胜感激。

出于某种原因,formGroupName 无法进入 ng-container。为了解决这个问题,我将 formGroupName 移到了 ng-template 的顶部,并将其更改为 [formGroup]。 formGroup 实例被传递到 ng-template 并在那里创建 nested/recursive 表单。

解决方案 stackblitz: https://stackblitz.com/edit/angular-k9saz2

我仍然不知道问题的 root-cause,但现在我有一个从初始 formGroup 递归生成的表单,并且所有验证器都与每个输入相关联。我还可以访问 meta-data 结构来根据需要呈现我的输入。

我也可以轻松地 add/remove/edit 输入,只需更改构造函数中的初始 formGroup 声明即可。这使得以后的维护变得非常容易。

我的下一步是将所有 formGroup 和 meta-data 生成移动到一个服务,并将它们作为输入传递到这个组件中,这样我就可以 re-use 这个模板用于不同的表单组。