我有一个升级的应用程序来使用 ngUpgrade,到目前为止运行良好,但我在尝试合并 Highcharts 时遇到了问题。
原始应用程序包含不同版本的 highcharts(AngularJS 的较旧版本)。
使用 Angular 的新(混合记住)应用程序具有不同版本的 highcharts。
当同时使用它们时,我遇到错误 #16,Highcharts 已经实例化,这是有道理的。
我的问题是,如何避免这种情况?
如果我删除旧的 highcharts,旧的应用程序将无法检测到新的 Angular highcharts。如果我删除新的,尝试通过窗口对象访问 highcharts 引用将不起作用,因为 highcharts 似乎无法检测新 Angular 模板,并且不知道如何使用它。
有人在应用程序的两个部分(旧的和新的)上组合了一个带有 Highcharts 的混合应用程序吗?
最佳答案
Highcharts 对象保存在 Window
对象的 Highcharts
属性中。 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]
}]
});
关于javascript - ng升级两个版本的Highcharts,错误16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038467/