首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有角4的高级图表中的异步DrillDown功能

具有角4的高级图表中的异步DrillDown功能
EN

Stack Overflow用户
提问于 2018-02-17 13:50:01
回答 2查看 782关注 0票数 0

我的工作是角4应用程序。在这个应用程序中,我们需要显示不同的图表。我用高级图表来显示不同的图表。

我想要实现向下钻取图表。我想绑定在用户点击钻取系列。

下面是我使用的代码:

我在图表对象中添加了如下所示的钻取事件:

代码语言:javascript
复制
chart: {
      type: 'column',
      events: {
           drilldown: (e,e2) =>{
           if (!e.seriesOptions) {
            var chart = e.target.options.chart;
            chart.showLoading('Loading');
            var dataArr = [1, 2];
            chart.setTitle({
              text: 'Quarter wise Revenue Report'
            });
            var data = {
              name: e.point.name,
              data: dataArr
            }
            this.service.customDelay()
              .subscribe(heroes => {
                chart.hideLoading();
                chart.addSeriesAsDrilldown(e.point, data);
              });            
          }
    }
}

在上面的代码中,服务是我的服务的服务对象,customDelay是为测试目的添加一些延迟的方法。

在上述代码中,我得到了以下错误:

chart.showLoading不是一个函数

为了解决这个问题,在删除箭头函数之后,我已经更新了上面的钻取函数,如下所示:

代码语言:javascript
复制
drilldown:function (e){
 if (!e.seriesOptions) {
        var chart = e.target.options.chart;
        chart.showLoading('Loading');
        var dataArr = [1, 2];
        chart.setTitle({
          text: 'Quarter wise Revenue Report'
        });
        var data = {
          name: e.point.name,
          data: dataArr
        }
        this.service.customDelay()
          .subscribe(heroes => {
            chart.hideLoading();
            chart.addSeriesAsDrilldown(e.point, data);
          });            
      }
}

在这种情况下,chart.showLoading和其他函数都在图表中工作,但是this.service变得没有定义。

EN

回答 2

Stack Overflow用户

发布于 2018-03-26 12:52:32

我已经解决了这个问题,因为下面的代码在我的例子中起作用:

代码语言:javascript
复制
events: {
      drilldown: (e) => {
        console.log('drill-down');
        if (!e.seriesOptions) {
          var chart = e.target;
          if (chart.options.lang.drillUpText !== ChartStyle.drillUpBackBtnText)
            chart.options.lang.drillUpText = ChartStyle.drillUpBackBtnText;
          if (this.drilldownsData[e.point.name]) {
            chart.addSeriesAsDrilldown(e.point, this.drilldownsData[e.point.name]);
          }
          else {
            chart.showLoading('');
            let months = CommonUtilityService.getPreviousNMonthYearString(3);
            this.chartDataService.getTenetMeasureDataMonthWise(e.point.tenetId, this.selectedTeam.TeamId, months)
              .subscribe(response => {
                let responseData = <IChartData>JSON.parse(response['_body']);
                let data = CommonUtilityService.createDrillDownData(responseData, "Rating", ChartStyle.ChartXAxisStyle, ChartStyle.MaxBarWidth);
                this.drilldownsData[e.point.name] = data;
                chart.hideLoading();
                chart.addSeriesAsDrilldown(e.point, data);
              });
          }

        }
      }
    }
票数 1
EN

Stack Overflow用户

发布于 2018-03-02 19:08:49

试着改变:

代码语言:javascript
复制
chart.showLoading('Loading');

至:

代码语言:javascript
复制
chart.ref.showLoading('Loading');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48842005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档