我知道关于这个主题的other问题,但是我似乎缺少了关于导入formsmodule和reactiveformsmodule的一些内容。
我有一个动态物体的模态部件。其思想是有一个可重用的模式库,其中包含一个动态主体,该主体要么从url加载,要么从预加载的模板填充。
(简明扼要)
modal-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>
模态-车身.部件.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..
}
许可证.html
<modal-dialog [HeaderText]="modalHeaderText"
[ActionButtonText]="actionButtonText"
[OkButtonText]="okButtonText"
[CloseButtonText]="closeButtonText"
[BodyTemplateUrl]="bodyTemplateUrl"
[Body]="bodyTemplate">
</modal-dialog>
我试图让“modal body”组件加载“bodytemplateurl”,
但出现“模块未定义”错误。Q1-此URL是相对于模式对话框组件还是许可证
组件?
现在,我在“licenses.component”中加载主体模板,并通过输入将其传递给对话框组件。现在的问题是“licenses.add.html”(正文模板)
无法识别[formgroup]指令,错误为“无法绑定到'formgroup'
因为它不是“form”的已知属性。
在sharedmodule中导入(和导出)reactiveformsmodule和formsmodules,其中
模态模块生存。然后将sharedmodule导入“licenses.module”中
用于访问模态组件。
最佳答案
reactiveformsmodule和formsmodules被导入(和导出)到模式模块所在的sharedmodule中。
不会这样工作的。模块不会从父级继承任何内容。模块应该是独立的。所以ModalModule
不能从SharedModule
中获取表单。
要解决这个问题,您可能认为可以将SharedModule
导入ModalModule
(以获取表单),但这是有效的,因为您将具有循环依赖性并导致它中断。因此,如果要将表单模块包含在ModalModule
中,只需将其直接导入到SharedModule
中。
关于angular - Angular2-无法绑定(bind)到“formGroup”,因为它不是“form”的已知属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40095815/