我正在处理一个表单“向导”组件,该组件设置了一个表单供用户在各部分中完成。这些部分本身是动态定义的。该向导将生成一个响应式表单,指定formGroup
和formGroupName
指令,然后使用ComponentFactoryResolver
动态生成负责呈现表单各部分输入内容的组件。
我在此处重新创建了一个基本演示:https://stackblitz.com/edit/angular-issue-repro2-pdtlnj
这里有两个问题:
我能够在应用程序中正常运行的唯一方法是在动态生成的组件中指定viewProvider
。这是不理想的,因为它会重复产生额外的开销-是否可以在生成组件的主机中指定这些提供程序?我尝试将ControlContainer
提供程序添加到它创建的Injector
中,但是没有任何效果。
另一个问题是,是否可以设置TestBed
,以便仅测试“子”组件,而无需使用FormGroup
和FormGroupName
完全重新创建主机结构?我怀疑如果第一个问题可以解决,我可以在测试中做类似的事情。