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

如何将 amcharts4 XY 图表制作为可重用组件

如何解决如何将 amcharts4 XY 图表制作为可重用组件

我有一个父组件:“dashboard-reports”
我为 am4chart XY bar 创建了一个子组件 (bar-chart.component)

我想为各种报告显示使用相同的组件,我们如何使用 angular 和 a4charts 库来实现这一点

在dashboard-reports.componet.html(父组件)中

<div><app-bar-chart [barChartInput]='downTimeAnalysis'></app-bar-chart><div>
<div><app-bar-chart [barChartInput]='reservationAnalysis'></app-bar-chart></div>

在 bar-chart-coponent.html 中

<div class="custom-card-body py-4 px-3">
    <div class="no-grid-kendo-loader">
        <div *ngIf="barLoading" class="k-i-loading"></div>
        <div id="barChat" style="height: 500px;"></div>
    </div>
</div>

bar-chart-component.ts 

export class BarChartComponent implements OnInit {
  private chart: am4charts.XYChart;
  public barLoading: boolean = false;

@Component({
  selector: 'app-bar-chart',templateUrl: './bar-chart.component.html',styles: []
})

constructor(public translate: TranslateService,private zone: ngzone) { }

ngOnInit() {
this.zone.runOutsideAngular(() => {
  let chart = am4core.create('barChat',am4charts.XYChart);
  this.barLoading = true;
  this.chart = chart;
this.setupBarChat();
});

}

public setupBarchart() {
     //Horizontal axis
    let categoryAxis = barChart.xAxes.push(new am4charts.CategoryAxis());
    categoryAxis.datafields.category = "instrumentName";
    categoryAxis.renderer.grid.template.strokeWidth = 0;
    categoryAxis.fontSize = 11;

    //Vertical axis
    let valueAxis = barChart.yAxes.push(new am4charts.ValueAxis());
    valueAxis.renderer.minGriddistance = 30;
    valueAxis.title.text = titleConfigureation;

    // showing bar chats data 
    let barChartSeries = barChart.series.push(new am4charts.ColumnSeries3D());
    barChartSeries.datafields.valueY = "usageInHours";
    barChartSeries.datafields.categoryX = "instrumentName";
    }

ngOnDestroy() {
    this.zone.runOutsideAngular(() => {
      if (this.chart) {
       this.chart.dispose();
      }
    });
  }

如何绘制多张图表,现在只能正确绘制一张图表。第二个没画好

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