我正在构建一个angular 7应用程序,并在运行时根据数据类型动态创建组件(窗体控件)。
以下是我的dynamic-loading-component.ts文件的摘录
this.componentRef.instance.form = this.form;
const dynamicComponent = this.componentRef.instance;
我将一些函数绑定到此dynamicComponent,如下所示:
dynamicComponent.onKeyUp = function (value) {
self.onValueChangeOfControl(dynamicComponent, value);
};
在其中一种控件类型中,例如在number.component.html文件中,我有以下代码
<input type='number' [value]="metadata.Value" [name]="metadata.Name" [id]="metadata.Name"
(keyup)="onKeyUp($event.target.value)">
无论何时发生keyup
事件,它都会正确调用全局分配的dynamicComponent.onKeyUp
函数,并且在本地一切正常。
但是,当我使用ng build --prod
构建此文件时,出现以下错误-
number\number.component.html(2,3): : Property 'onKeyUp' does not exist on type 'NumberComponent'.
Angular在我的number.components.ts文件中期望onKeyUp()
的定义,但是,我将其绑定到上面的动态组件。我不想在每个控制组件文件中为此类事件编写重复的代码。
有哪些解决方案? ng build
可以正常工作,但我需要ng build --prod
才能获得优化的部署位。
有想法吗?
答案 0 :(得分:0)
您是否尝试过在定义模块的entryComponents
部分中指定动态组件?
请参阅What is the difference between declarations and entryComponents
[...]如果您的应用恰好通过以下方式引导或动态加载组件 强制性地键入,必须将其显式添加到entryComponents。