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