如何在 Typescript 中使用 Chart.js 动态填充多个图表

How to populate multiple charts dynamically with Chart.js in Typescript

我想要使用 Chart.jsTypescript 和 [=30 在一页上动态生成多个图表=]Angular

在页面上:

<canvas *ngFor="let d of data" 
style="position:relative, width: 15vh, height: 40vw" #canvases></canvas>

for 循环仅创建可用数据的图表数量。

打字稿文件中:

我想过使用多个 ViewChild 语句,但这需要知道应该创建多少个图形,我不知道。我也尝试使用 QueryLists 但未能使它们工作,因为我调用的任何函数(toArray、foreach 等)似乎都没有定义。

@ViewChildren('canvases') canvases:QueryList<HTMLCanvasElement>

一个人 canvas 应该循环传递给正常的 Chart.js 函数,然后用正确的数据填充

let newChart = new Chart(individualCanvas, {
    type: 'line',
    ...
})

有没有人知道如何从 HTML 页面上生成的 canvases 进入一个循环,在这个循环中我可以将单独的 canvases 用于 Chart.js实例?

我还没有弄清楚如何使用 QueryList 进行处理。但是我找到了避免它们的方法。为此,我在 HTML 页面上引入了一个额外的 div,具有唯一 ID。

<div #canvases>
    <canvas *ngFor="let d of data" 
    style="position:relative, width: 15vh, height: 40vw"></canvas>
</div>

然后我再次使用了 ViewChild 但这次绑定了 div

@ViewChild('canvases') canvases: ElementRef<HTMLElement>

填充图表时,我使用了一个循环并访问了 div 的子项,它们是 dividual 画布。

let index = 0
for(let d of this.data){
    let individualCanvas = this.canvases.nativeElement.children.item(index)

    let newChart = new Chart(individualCanvas, {
        type: 'line',
        ...
    })

    index++
}