Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 带有自定义表单组件的嵌套模板表单,没有ControlContainer的提供程序_Angular_Forms_Dependency Injection - Fatal编程技术网

Angular 带有自定义表单组件的嵌套模板表单,没有ControlContainer的提供程序

Angular 带有自定义表单组件的嵌套模板表单,没有ControlContainer的提供程序,angular,forms,dependency-injection,Angular,Forms,Dependency Injection,我意识到在这个问题上还有其他问题,但我的情况有点不同 我们的架构团队凭借其无限的智慧,决定将NgForms抽象为一个定制组件。我最近遇到的是,试图使用NgModelGroup指令导致Angular抱怨“ControlContainer没有提供程序” 参考这篇媒体文章:,我尝试在我的主机组件中使用“viewProviders:[{Provider:ControlContainer,useExisting:NgForm}]”。然而,Angular随后抱怨,“NullInjectorError:没有N

我意识到在这个问题上还有其他问题,但我的情况有点不同

我们的架构团队凭借其无限的智慧,决定将NgForms抽象为一个定制组件。我最近遇到的是,试图使用NgModelGroup指令导致Angular抱怨“ControlContainer没有提供程序”

参考这篇媒体文章:,我尝试在我的主机组件中使用“viewProviders:[{Provider:ControlContainer,useExisting:NgForm}]”。然而,Angular随后抱怨,“NullInjectorError:没有NgForm的提供程序!”

例如,下面是试图将此自定义表单组件与NgModelGroup指令一起使用的组件的结构:

<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 ],