Динамически создаваемые компоненты - "ng build --prod" выдает ошибку при создании пакета - PullRequest
0 голосов
/ 22 мая 2019

Я создаю приложение angular 7 и динамически создаю компоненты (элементы управления формой) во время выполнения в зависимости от типа данных.

Ниже приводится выдержка из моего файла динамически загружаемого компонента.ts enter image description here

this.componentRef.instance.form = this.form;
const dynamicComponent = this.componentRef.instance;

Я привязываю некоторые функции к этому динамическому компоненту, как показано ниже:

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 ожидает определения onKeyUp() в моем файле number.components.ts, однако, я ограничил это динамическим компонентом выше. Я не хочу писать повторяющийся код в каждом файле компонента управления для таких событий.

Какие есть варианты решения этой проблемы? ng build работает нормально, но мне нужно ng build --prod, чтобы получить оптимизированные биты для развертывания.

Мысли

1 Ответ

0 голосов
/ 22 мая 2019

Вы пытались указать динамические компоненты в разделе entryComponents модуля определения?Обратитесь к В чем разница между объявлениями и entryComponents

И из Angular Docs :

[...], если вашприложение происходит при начальной загрузке или динамической загрузке компонента по типу, вам необходимо явно добавить его в entryComponents.

...