Angular компонентов: экземпляр расширенного класса кажется перезаписанным - PullRequest
1 голос
/ 24 февраля 2020

В моем проекте angular 8 у меня есть класс (просто класс, не реализованный как компонент), который предоставляет некоторую конфигурацию и методы по умолчанию.

Этот класс расширяется несколькими компонентами. Если несколько компонентов в одном и том же представлении (т. Е. Существуют одновременно) расширяют этот класс, их экземпляры перезаписывают друг друга. Если я перезаписываю атрибут или метод в одном из компонентов, а потом создается еще один, перезаписывается vani sh.

. Я понятия не имею, почему это произойдет. Конструктор расширенного класса вызывается несколько раз, поэтому теоретически каждый расширяющий класс должен создавать свой собственный экземпляр.

Обновление

Я воссоздал проблему в этом StackBlitz демо: https://stackblitz.com/edit/angular-hw1cv9

ListComponent и PopupComponent расширяют DataGridComponent. В ListComponent я включаю функцию экспорта в шаблоне, и это всегда работает. Я также перезаписываю обработчик события onExporting. Эта перезапись работает нормально, если вы закомментируете всплывающее окно (или заблокируете его создание с помощью * ngIf = "popupVisible"), но оно возвращается к своей первоначальной функциональности с всплывающим окном как есть.

(я не могу понять, как показать значки devextreme в демо, извините. Кнопка экспорта находится слева над таблицей).

Обновлен демо с решением

1 Ответ

1 голос
/ 25 февраля 2020

Вы устанавливаете defaultOptions самого объекта DataGrid. Любой класс, который наследует ваш компонент или импортирует DataGrid откуда-то еще, будет иметь конфигурацию, установленную вами в конструкторе DataGridComponents.

Вы уверены, что хотите напрямую назначить defaultOptions для объекта DataGrid?

...