chart.js 在 angular 中没有在 ng-template 中呈现
chart.js not getting rendered inside ng-template in angular
描述
我已经在 ng-template
中声明了 chart.js,但是图表没有正确呈现
示例代码
<div style="display: block; width: 100%">
<ng-container *ngTemplateOutlet="qualitySurveyTemp"></ng-container>
</div>
<ng-template #qualitySurveyTemp>
<canvas id="canvas">{{ chart }}</canvas>
</ng-template>
当我像下面这样使用时它工作正常
<div style="display: block; width: 100%">
<canvas id="canvas">{{ chart }}</canvas>
</div>
样本 - https://stackblitz.com/edit/angular-chartjs-barchart-sjamlr?file=src%2Fapp%2Fapp.component.html
似乎是因为您正在尝试在子模板中绘制图表,所以在 ngOnInit
挂钩中不可用。您可以通过尝试记录 document.getElementById('canvas')
来看到这一点,这将使 return 为空。如果您更改为 ngAfterViewInit
挂钩来创建图表,它可以正常工作:
https://stackblitz.com/edit/angular-chartjs-barchart-uqqnay?file=src%2Fapp%2Fapp.component.ts
描述
我已经在 ng-template
中声明了 chart.js,但是图表没有正确呈现
示例代码
<div style="display: block; width: 100%">
<ng-container *ngTemplateOutlet="qualitySurveyTemp"></ng-container>
</div>
<ng-template #qualitySurveyTemp>
<canvas id="canvas">{{ chart }}</canvas>
</ng-template>
当我像下面这样使用时它工作正常
<div style="display: block; width: 100%">
<canvas id="canvas">{{ chart }}</canvas>
</div>
样本 - https://stackblitz.com/edit/angular-chartjs-barchart-sjamlr?file=src%2Fapp%2Fapp.component.html
似乎是因为您正在尝试在子模板中绘制图表,所以在 ngOnInit
挂钩中不可用。您可以通过尝试记录 document.getElementById('canvas')
来看到这一点,这将使 return 为空。如果您更改为 ngAfterViewInit
挂钩来创建图表,它可以正常工作:
https://stackblitz.com/edit/angular-chartjs-barchart-uqqnay?file=src%2Fapp%2Fapp.component.ts