动态创建组件-“ ng build --prod”会在包创建期间引发错误

时间:2019-05-22 11:56:38

标签: angular angular-cli angular-forms angular-aot

我正在构建一个angular 7应用程序,并在运行时根据数据类型动态创建组件(窗体控件)。

以下是我的dynamic-loading-component.ts文件的摘录 enter image description here

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才能获得优化的部署位。

有想法吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过在定义模块的entryComponents部分中指定动态组件? 请参阅What is the difference between declarations and entryComponents

Angular docs

  

[...]如果您的应用恰好通过以下方式引导或动态加载组件   强制性地键入,必须将其显式添加到entryComponents。

相关问题