我有一个升级的应用程序,使用ngUpgrade到目前为止运行良好,但我在尝试合并Highcharts时遇到了问题。
原始应用程序包含不同版本的高级图表(AngularJS的旧版本)。
使用Angular的新(混合记忆)应用程序具有不同版本的highcharts。
当两者都使用时,我遇到错误#16,Highcharts已经实例化,这是有道理的。
我的问题是,我该如何避免这种情况?
如果我删除旧的高级图表,旧应用程序将无法检测到新的角度高图。如果我删除新的,尝试通过窗口对象访问highcharts引用不起作用,因为highcharts似乎无法检测新角度的模板,也不知道如何使用它。
有没有人在应用程序的两个部分(旧的和新的)上放置一个带有highcharts的混合应用程序?
答案 0 :(得分:1)
Highcharts对象保存在Highcharts
对象的Window
属性中。 Highcharts检查它是否已经在此属性中定义,如果它是真的则抛出错误16。
<强>解决方案:强>
您可以尝试在其他属性中保存其中一个版本的Highcharts,并在加载其他版本之前清除Window.Highcharts
:
<强> HTML:强>
<script src="https://code.highcharts.com/4.2.2/highcharts.src.js"></script>
<script>
this.HighchartsOld = this.Highcharts;
this.Highcharts = null;
</script>
<script src="https://code.highcharts.com/highcharts.src.js"></script>
<div id="container1" style='height: 200px'></div>
<div id="container2" style='height: 200px'></div>
<强> JS:强>
var chart = Highcharts.chart('container1', {
series: [{
data: [1, 2]
}]
});
var chart = HighchartsOld.chart('container2', {
series: [{
data: [1, 2]
}]
});