請參考大神的博客:https://blog.csdn.net/qq_35321405/article/details/80340969html
var myChart = echarts.init(document.getElementById('main')); setInterval(function () { for (var i = 0; i < 5; i++) { data.shift(); data.push(randomData()); } // 須要獲取到echarts圖表實例 myChart.setOption({ series: [{ data: data }] }); }, 1000);
<div #myCharts echarts [options]="options"></div>
@Component({ selector: 'app', templateUrl: './app.component.html' }) export class AppComponent implements OnInit, OnDestroy { @ViewChild('myCharts') myCharts: ElementRef; options; private timer; constructor(private es: NgxEchartsService){ var data = []; var now = +new Date(1997, 9, 3); var oneDay = 24 * 3600 * 1000; var value = Math.random() * 1000; for (var i = 0; i < 1000; i++) { data.push(this.randomData()); } this.options = { title: { text: '動態數據 + 時間座標軸' }, tooltip: { trigger: 'axis', formatter: function (params) { params = params[0]; var date = new Date(params.name); return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1]; }, axisPointer: { animation: false } }, xAxis: { type: 'time', splitLine: { show: false } }, yAxis: { type: 'value', boundaryGap: [0, '100%'], splitLine: { show: false } }, series: [{ name: '模擬數據', type: 'line', showSymbol: false, hoverAnimation: false, data: data }] }; } ngOnInit() { this.timer = setInterval(function () { for (var i = 0; i < 5; i++) { data.shift(); data.push(randomData()); } this.es.getInstanceByDom(this.myCharts.nativeElement).setOption({ series: [{ data: data }] }); }, 1000); } ngOnDestroy() { if (this.timer) clearInterval(this.timer); } private randomData() { now = new Date(+now + oneDay); value = value + Math.random() * 21 - 10; return { name: now.toString(), value: [ [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'), Math.round(value) ] } } }