微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用延迟加载模块的名称空间

如何解决如何使用延迟加载模块的名称空间

我有一个使用AmCharts库的Angular应用程序。为了使用图表,我想延迟加载AmCharts,他们建议使用promises。我遇到的问题是,类型推断似乎不起作用,我想指定要创建的常量的类型。

Integer

如果我要在顶部导入模块,则Promise.all([ import("@amcharts/amcharts4/core"),import("@amcharts/amcharts4/charts"),import("@amcharts/amcharts4/themes/animated"),]).then((modules) => { const am4core = modules[0]; const am4charts = modules[1]; const am4themes_animated = modules[2].default; ... const valueAxis: am4charts.ValueAxis = chart.yAxes.push( new am4charts.ValueAxis() ); 声明会起作用,但是现在我在valueAxis的{​​{1}}上收到一个错误,指出名称空间不存在。 我有什么办法可以使它工作?

解决方法

在打字稿中,您可以import only the types,而且似乎可以解决问题

所以在我的代码中,我现在有:

import type * as am4chartsTypes from "@amcharts/amcharts4/charts";
import type * as am4coreTypes from "@amcharts/amcharts4/core";
...


export class Chart {
  private chart?: am4chartsTypes.XYChart;

  ngAfterViewInit() {
    ... 
    
    this.chart = am4core.create(
        this.chartWrapper.id,am4charts.XYChart
    );
    ...
  }

}


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。