Angular2 - 无法绑定到'formGroup',因为它不是'form'的已知属性

时间:2016-10-17 21:18:33

标签: angular typescript angular2-forms

我知道有关该主题的other个问题,但我似乎缺少有关导入FormsModule和ReactiveFormsModule的内容。

我有一个带有动态主体的模态组件。我们的想法是拥有一个可重复使用的模态库,其动态主体可以从URL加载,也可以从预加载的模板中填充。

(为简洁起见简化)

模态-dialog.html

<!--modal-content-->

<!--modal-header-->

<modal-body [BodyTemplateUrl]="BodyTemplateUrl" [BodyTemplate]="BodyTemplate"></modal-body>

<!--modal-footer-->

modal-body.html (使用angular2-component-outlet的动态模板)

  <ng-container *componentOutlet="template; context: context"></ng-container>

模态-body.component.ts

@Input() BodyTemplateUrl: string;
@Input() BodyTemplate: string;

constructor() { }

ngAfterViewInit() {
  // this.template = require(this.BodyTemplateUrl);  // 'module undefined' when doing this

  this.template = this.BodyTemplate;  // can't bind to formGroup error.. 
}

licences.html

<modal-dialog [HeaderText]="modalHeaderText"
          [ActionButtonText]="actionButtonText"
          [OkButtonText]="okButtonText"
          [CloseButtonText]="closeButtonText"
          [BodyTemplateUrl]="bodyTemplateUrl"
          [Body]="bodyTemplate">
</modal-dialog> 

我试图让'modal-body'组件加载'BodyTemplateUrl', 但得到'模块未定义'错误。 Q1 - 是相对于模态对话框组件或许可证的URL 部件吗

现在我在'licences.component'中加载body模板,并通过输入将其传递给对话框组件。现在的问题是'licences.add.html'(正文模板) 无法识别[formGroup]指令,错误“无法绑定到'formGroup' 因为它不是“形式”的已知属性。

ReactiveFormsModule和FormsModules在SharedModule 中导入(和导出) 模态模块存在。然后在'licences.module'中导入SharedModule 用于访问模态组件。

1 个答案:

答案 0 :(得分:2)

  

ReactiveFormsModule和FormsModules在模态模块所在的SharedModule中导入(和导出)。

不会像这样工作。模块不会从父母那里继承任何东西。模块应该是自包含的。因此,ModalModule无法从SharedModule获取表单。

要解决此问题,您可能认为可以将SharedModule导入ModalModule(以获取表单),但这样做有效,因为您将具有循环依赖关系并导致其中断。因此,如果要将表单模块包含在ModalModule中,只需将表单模块直接导入SharedModule