我有几个共享公共部分的表单。我将这些常用部分放在组件中并使用'viewProviders'来访问父表单:

@Component({
  selector: 'sub-form',
  ...
  viewProviders: [ { provide: ControlContainer, useExisting: NgModelGroup} ]
})

问题是我需要使用该组件隐藏组并直接在表单内部,如下面的示例所示:

<form>
  ...
  <div ngModelGroup="my-group">
    <sub-form></sub-form>
  </div>
  ...
</form>

<form>
  ...
    <sub-form></sub-form>
  ...
</form>

不幸的是,通过使用'useExisting:NgModelGroup',这仅适用于第一种情况,而使用'useExisting:NgForm'时,它总是将自身绑定到主窗体,忽略该组。我尝试使用'useExising:ControlContainer',因为 NgForm 和 NgModelGroup 都扩展了这个类,但是我得到了一个循环依赖错误(如预期的那样)。

我是否需要创建两个不同的组件,或者是否有办法在两种情况下都能使用它?