我知道有关该主题的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 用于访问模态组件。
答案 0 :(得分:2)
ReactiveFormsModule和FormsModules在模态模块所在的SharedModule中导入(和导出)。
不会像这样工作。模块不会从父母那里继承任何东西。模块应该是自包含的。因此,ModalModule
无法从SharedModule
获取表单。
要解决此问题,您可能认为可以将SharedModule
导入ModalModule
(以获取表单),但这样做有效,因为您将具有循环依赖关系并导致其中断。因此,如果要将表单模块包含在ModalModule
中,只需将表单模块直接导入SharedModule
。