Я локально использую следующие зависимости highcharts:
- "angular-highcharts": "последний"
- "highcharts": "последний"
- "@ types / highcharts": "последний"
Вот живая демонстрация моего исходного кода,
Я широко использую angular-highcharts в моем приложении angular 5. Много времени необходимо расширить диаграмму (когда на диаграмме видно много точек данных), чтобы учесть такие случаи, я хотя бы создал общий компонент.
Этот компонент с именем chart-widget отображает диаграмму в загрузочной карточке с возможностью раскрытия диаграммы, в развернутом виде та же диаграмма открывается в модальном окне. Этот общий компонент позаботится обо всей логике, необходимой для открытия любой диаграммы в модальном окне (которое можно перетаскивать и изменять размер). Таким образом, нам не нужно везде воспроизводить одни и те же функции.
Я сделал общий компонент, и все работало нормально, но недавно мы обновили наши зависимости репо, так как в версии highcharts, которую мы использовали, были некоторые другие проблемы, эти проблемы были исправлены в последней версии highCharts, поэтому мы решили, что лучше обновитесь до последней версии. С тех пор этот функционал перестал работать.
Следующая логика использовалась для клонирования chartConfig во время открытия модального окна. Затем клонированная конфигурация была передана в расширенную диаграмму, которая находится внутри модального окна. Но теперь развернутая диаграмма всегда пуста.
this.expandChartConfig = new Chart(Object.assign({}, this.chartConfig.options));
где chartConfig - обычная конфигурация, используемая для отображения диаграммы,
а expandChartConfig - объект диаграммы, переданный модальному окну.
После обновления я понял, что свойство chartConfig.options теперь закрыто, поэтому я также попробовал:
this.expandChartConfig = new Chart(Object.assign({}, this.chartConfig.ref.options));
но это тоже не сработало.
Первоначально я использовал одну и ту же конфигурацию для обеих диаграмм, но это приводило к проблемам, так как при закрытии модального окна highChart также был уничтожен. Поэтому я решил, что создание отдельной конфигурации во время открытия модального окна для диаграммы внутри модального окна было бы лучшим случаем.
Итак, простыми словами, мой вопрос: как я могу динамически клонировать существующую диаграмму.
Эта функциональность требуется в десятках мест, поэтому я не могу поддерживать отдельные объекты диаграммы в каждом месте.
Также с диаграммами выполняется множество операций, таких как setData, setCategories, addSeries, removeSeries, update и т. Д. поэтому не рекомендуется сохранять копии и обновлять их при каждой операции. Также эта операция будет выполняться родительским компонентом, поэтому ChartWidgetComponent не может знать о таких изменениях, когда они выполняются.
Итак, вкратце, как я могу динамически клонировать существующий highchart, а также какой метод лучше всего?
P.s. Я попробовал несколько методов, упомянутых в stackOverflow, но ни один из них, похоже, не работает.