首页 文章

使用ng2-charts显示实时数据

提问于
浏览
1

当使用ng2图表显示实时数据时,我遇到了一些问题,它总是随时显示0 . 我在下面粘贴了我的代码片段 . 有人可以帮我检查一下并告诉我哪里做错了吗?

temps: Array<number> = [];
public lineChartData: Array<any> = [[]];  
custom: boolean = false; 
report: boolean = false;  
errMess: any;    
keys: any[] = []    




constructor(public dialog: MatDialog,
private dishService: DishService,){}    
public lineChartLabels: Array<any> = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];
public lineChartType: string = 'line';
ngOnInit() {
this.dishService.getTemp()
  .subscribe(temps => {
    for (let key in temps[0]) {
      for (var _i = 0; _i < temps.length; _i++) {
        this.keys.push(temps[_i][key]);
      }
    }
    console.log(this.keys);
    this.lineChartData.push(this.keys);
  });
 }

1 回答

  • 0

    这是ng2-charts的一个已知问题,你需要手动让angular知道你已经更新了数据,

    在下面的行之后做这样的事情,

    this.lineChartData.push(this.keys);
    this.forceChartRefresh();
    

    功能如下,

    forceChartRefresh() {
        setTimeout(() => {
          this._chart.refresh();
        }, 10);
      }
    

    你需要在组件内部有一个变量,

    @ViewChild(BaseChartDirective) private _chart;
    

    EDIT

    要查看每5分钟更新一次的图表,您可以使用

    this.interval = setInterval(() => {
        callyour function();
    }, 5000);
    

相关问题