首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角:组件中的多个嵌套FormGroups

角:组件中的多个嵌套FormGroups
EN

Stack Overflow用户
提问于 2018-11-29 18:42:15
回答 1查看 2.1K关注 0票数 3

我正在尝试嵌套几个FormGroups,如果我不想将模板外包给自己的组件,那么它工作得很好。

下面是一个例子,它起作用了

模板

代码语言:javascript
复制
<form [formGroup]="baseForm">
  <div formGroupName="nestedForm1">
    <div formGroupName="nestedForm2">
      <input formControlName="nestedControl">
    </div>
  </div>
</form>

打字本

代码语言:javascript
复制
this.baseForm = this.formBuilder.group({
  nestedForm1: this.formBuilder.group({
    nestedForm2: this.formBuilder.group({
      nestedControl: ["Default Value"]
    })
  })
});

如果我试图将"nestedForm1“和"nestedForm2”外包到单独的组件中,那么从第二层开始,它就不再工作了。

在下面的链接中可以找到一个示例。在这里,您可以通过注释掉"app.component.html“中各自的代码部分来尝试这两种方法。

https://stackblitz.com/edit/angular-gnpw24?file=src%2Fapp%2Fapp.component.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-29 18:54:37

这是因为ControlContainer提供程序可以在以下任何指令中注册:

模板驱动指令

  • NgForm
  • NgModelGroup,

反应指令

  • FormGroupDirective
  • FormGroupName
  • FormArrayName

但是您希望它始终是FormGroupDirective,而在第二个组件中,父ControlContainerFormGroupName

我将使用公共解决方案,无论父ControlContainer类型如何,该解决方案都能工作。

代码语言:javascript
复制
viewProviders: [{
  provide: ControlContainer,
  useFactory: (container: ControlContainer) => container,
  deps: [[new SkipSelf(), ControlContainer]],
}]

叉式斯塔克布利茨

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53545617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档