Angular 带有自定义表单组件的嵌套模板表单,没有ControlContainer的提供程序
我意识到在这个问题上还有其他问题,但我的情况有点不同 我们的架构团队凭借其无限的智慧,决定将NgForms抽象为一个定制组件。我最近遇到的是,试图使用NgModelGroup指令导致Angular抱怨“ControlContainer没有提供程序” 参考这篇媒体文章:,我尝试在我的主机组件中使用“viewProviders:[{Provider:ControlContainer,useExisting:NgForm}]”。然而,Angular随后抱怨,“NullInjectorError:没有NgForm的提供程序!” 例如,下面是试图将此自定义表单组件与NgModelGroup指令一起使用的组件的结构:Angular 带有自定义表单组件的嵌套模板表单,没有ControlContainer的提供程序,angular,forms,dependency-injection,Angular,Forms,Dependency Injection,我意识到在这个问题上还有其他问题,但我的情况有点不同 我们的架构团队凭借其无限的智慧,决定将NgForms抽象为一个定制组件。我最近遇到的是,试图使用NgModelGroup指令导致Angular抱怨“ControlContainer没有提供程序” 参考这篇媒体文章:,我尝试在我的主机组件中使用“viewProviders:[{Provider:ControlContainer,useExisting:NgForm}]”。然而,Angular随后抱怨,“NullInjectorError:没有N
<app-custom-form>
<fieldset ngModelGroup="myGroup">
<app-custom-input
name="myValueName"
placeholder="Input 1"
[(ngModel)]="myValue"
></app-custom-input>
<br>
<app-custom-input
name="myOtherValueName"
placeholder="Input 2"
[(ngModel)]="myOtherValue"
></app-custom-input>
</fieldset>
</app-custom-form>
是一个Github repo,它演示了问题。您尚未将@angular/forms
表单模块
添加到模块的导入列表中
转到你的app.module.ts并将此行添加到导入中:
import { FormsModule } from '@angular/forms';
并在模块定义中查找类似的行:
imports: [ /* several import modules may be listed here */ ],
并像这样添加FormsModule(如果已经有导入,请将FormsModule添加到列表中):
你看过Github回购协议了吗?FormsModule实际上是在app.module.ts(以及custom-form.module和custom-input.module)中导入的。顺便说一句,我注意到以这种方式编写表单的另一个副作用——这些输入实际上不会添加到表单的控件中。因此,我怀疑是否可以创建自定义表单组件,因为它无法识别其内容子控件。
imports: [ FormsModule ],