我正在使用元数据对象动态创建非常大的形式(〜400个输入,尽管在Stackblitz示例中显示了一个小样本(。我需要使用元数据结构将特定于输入的信息携带到输入(即输入类型,选择选项,步骤大小等(。当我的html ng-template被递归地在A内部递归调用,随后未识别父表格。当我越过初始递归级别时,反应性无法跟踪所需的formGroup。
本质上,FormGroupName似乎无法穿过递归模板的级别。
我已经旋转了一段时间,试图获得这种功能,但无济于事。
我有一个我想做的示例。
https://stackblitz.com/edit/angular-jndvkb
任何帮助弄清楚为什么穿过FormGroup的路径在模板内部不起作用的路径将不胜感激。
无论出于何种原因,formGroupName都无法进入NG-Container。为了解决这个问题,我将FormGroupName移至NG-Template的顶部,然后将其更改为[FormGroup]。FormGroup实例传递到NG-Template中,并在此处创建嵌套/递归形式。
解决方案stackblitz:https://stackblitz.com/edit/angular-k9saz2
我仍然不知道问题的根本原因,但是现在我有了一种从初始formgroup递归生成的表单,并且所有验证器都与每个输入绑定。我还可以访问元数据结构,以渲染我的输入。
我也可以通过仅更改构造函数中的初始FormGroup声明来轻松添加/删除/编辑输入。这使维护非常轻松。
对我来说,下一步是将所有FormGroup和Meta-data生成转移到服务,并将它们传递到该组件中作为输入,因此我可以重新使用此模板,以适用于不同的表单组。