【发布时间】:2019-09-09 20:01:26
【问题描述】:
我正在使用动态 gridster,它允许用户创建各种类型的小部件。
这些小部件是在 ngFor 指令中创建的,所以我只是将一个新小部件推送到一个数组并想要初始化图表,但似乎该元素不在 DOM 中。
我知道可能有对 ViewChild 的引用,但没有任何支持的最大长度。此外,我可以轻松地使用 setTimeout,但这对我来说似乎不是一个很好的方法。此外,amchart 有一个 ready() 函数,但在这种情况下,它没有帮助,因为它引用库 init 而不是图表容器。
// Main array of data
let widgets = [
{type: 'chart', id:'uniqueID'};
];
// Simply generate a new widget
createChart() {
let chartWidget = {type: 'chart', id: 'uniqueID2'};
this.widgets.push(chartWidget);
let amchart = this._amChartsService
.makeChart(chartWidget.id, {chartOpt});
};
<div *ngFor="let widget of widgets>
<div [attr.id]="widget.id"></div>
</div>
此解决方案仅适用于新创建的 HTML 元素。在我保存数据并再次加载后,会有一个生命周期事件为我处理它。
是否有像 ngDoCheck 这样的功能可以让我知道 ngFor 指令是否实际创建了元素并且它是否可用?
或任何 amcharts 主解决方案?
【问题讨论】: