javascript - 如何在构造函数中加载数据,并通过 ngAfterViewInit 中的 Chartjs 进行渲染?
问题描述
这是我的问题。很多在 Angular 中使用 Chartjs 的例子只假设数据已经存在,并且他们在ngAfterViewInit
.
但是,我无法弄清楚如何满足我的要求:
- 我需要在构造函数中加载数据
- 在加载数据时,我设置了一个布尔属性来显示不确定的
mat-spinner
- 当然,加载数据确实是不确定的,我不知道它什么时候加载(promise land 可能)
- 加载数据时,我需要使用 Chartjs API 将数据绘制到画布中
- 如果我在构造函数中执行此操作,那么我会遇到 null 引用
document.getElementById('canvasId')
,因为它尚未呈现。 - 如果我在 constrcutor 中加载数据并想在 中渲染画布
ngAfterViewInit
,那么我不知道何时加载数据,因为它是不确定的,并且我遇到了我的数据对象属性的空引用。 - 如果我在 中加载数据
ngAfterViewInit
,那么 Angular 会抱怨ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'ngIf: undefined'. Current value: 'ngIf: true'
. 此错误与mat-spinner *ngIf='progress'
我被困在如何协调这些要求上。有什么帮助吗?
解决方案
推荐阅读
- wordpress - 太多的标签会让 wordpress 网站变慢吗?
- mongodb - 在 MongoDB 聚合中添加数组元素的字段
- javascript - JavaScript 模型设计模式、自定义事件等
- ruby-on-rails - 是否可以使用 react webpacker 在 shopify rails 应用程序上启用 HMR?
- java - 在java库中使用依赖注入好吗?
- sql - 如何在 PL/SQL Oracle 中计算?
- angular - 优先考虑单个#tooltipTemplate ngx-charts-line-chart 中的值
- swift - SwiftUI 中 ObjectBinding 和 List 的误导性错误
- amazon-web-services - 给 EKS 服务一个静态 IP
- c++ - 我如何知道线程是否在 C++ 中停止?