【问题标题】:Angular ng2-chart shows the previous chart for the button clickAngular ng2-chart 显示了按钮单击的上一个图表
【发布时间】:2018-03-16 00:14:05
【问题描述】:

我对 Angular 5 完全陌生。我想在我的应用程序中使用向下钻取图表。有很多选择,对于这个项目,我想使用一个开源库。所以我正在使用 ng2-charts。默认情况下 ng2-chart 不支持向下钻取图表。所以我所做的是,点击事件我加载一个新数据和一个图表。这是我尝试过的。

组件.ts

  export class ChartComponent{
  public clickBtn = false;
  data1:string;
  data2:string;
  label:string;
  previousBtnMsg:string;
  public chartClickTimes: number = 0;

 public barChartOptions:any = {
    scaleShowVerticalLines: false,
    responsive: true
  };
  public barChartLabels:string[] = ['2006', '2007', '2008', '2009', '2010', '2011', '2012'];
  public barChartType:string = 'bar';
  public barChartLegend:boolean = true;

  public barChartData:any[] = [
    {data: [65, 59, 80, 81, 56, 55, 40], label: 'Type A'},
    {data: [28, 48, 40, 19, 86, 27, 90], label: 'Type B'}
  ];

  public newDataValues:any[] = [
    {data: [40,37,50,70,50,34,50], label: 'Type A'},
    {data: [54,34,56,76,57,37,56], label: 'Type B'}
  ];

  // events
  public chartClicked(e:any):void {
    this.chartClickTimes =this.chartClickTimes + 1 ;
     this.clickBtn = true;

     if(e.active.length > 0) {

      this.previousBtnMsg = "Back to series";

      let newData1 = [40,37,50,70,50,34,50];
      let newData2 = [54,34,56,76,57,37,56];
      let newData3 = [35,36,45,64,43,23,33];
      let newData4 = [54,44,36,46,47,37,34];

      if(this.chartClickTimes ==1){
          let clone = JSON.parse(JSON.stringify(this.barChartData));
              clone[0].data = newData1;
              clone[1].data = newData2;
              this.barChartData = clone; 

      }else if(this.chartClickTimes ==2){
          let clone = JSON.parse(JSON.stringify(this.barChartData));
          clone[0].data = newData3;
          clone[1].data = newData4;
          this.barChartData = clone; 
      }
    } 

  }

  buttonClick(){
    console.log('Clicked')
  }


}

html

<div class="chart-display">
<div *ngIf="clickBtn">
  <button (click)="buttonClick(item)">{{previousBtnMsg}}</button>
</div>
  <div style="display: block">
    <canvas baseChart
            #baseChart="base-chart" 
            [datasets]="barChartData"
            [labels]="barChartLabels"
            [options]="barChartOptions"
            [legend]="barChartLegend"
            [chartType]="barChartType"
            (chartClick)="chartClicked($event)"></canvas>
  </div>
</div>

当用户选择新图表时,它会显示一个后退按钮。如何显示该事件的上一个图表( buttonClick 方法)?标签也不会更新。 (我删除了这些代码)有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: angular ng2-charts


    【解决方案1】:

    希望你这样做

    import { ChartsModule } from 'ng2-charts/ng2-charts';
    import {RouterExtensions} from "nativescript-angular/router";
    
    // In your App's module:
    imports: [
    ChartsModule
    ]
    

    然后您可以根据需要使用导航。

    constructor(private router: RouterExtensions) { }
     navigateBack() {
        this.router.back();
     }
    

    请在 ngx-charts 上进行演示。!

    https://github.com/valor-software/ng2-charts/tree/development/demo/src/app/components/charts

    【讨论】:

    • 我已经导入了。我越来越找不到名称RouterExtensions。我需要为此导入什么?是的,我也检查了演示
    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多