Angular 等待DOM就绪状态在动态添加的元素上初始化amchart

Angular 等待DOM就绪状态在动态添加的元素上初始化amchart,angular,dynamic,amcharts,Angular,Dynamic,Amcharts,我正在使用DynamicGridster,它允许用户创建各种类型的小部件 这些小部件是在ngFor指令中创建的,所以我只是将一个新的小部件推送到一个数组中,并希望初始化图表,但似乎元素还不在DOM中 我知道可能存在对ViewChild的引用,但没有任何支持的最大长度。另外,我可以很容易地使用setTimeout,但对我来说这似乎不是一个很好的方法。另外,amchart有一个ready()函数,但在本例中,它没有帮助,因为它引用库init而不是图表容器 //数据的主数组 让小部件=[ {type:

我正在使用DynamicGridster,它允许用户创建各种类型的小部件

这些小部件是在ngFor指令中创建的,所以我只是将一个新的小部件推送到一个数组中,并希望初始化图表,但似乎元素还不在DOM中

我知道可能存在对ViewChild的引用,但没有任何支持的最大长度。另外,我可以很容易地使用setTimeout,但对我来说这似乎不是一个很好的方法。另外,amchart有一个ready()函数,但在本例中,它没有帮助,因为它引用库init而不是图表容器

//数据的主数组
让小部件=[
{type:'chart',id:'uniqueID'};
];
//只需生成一个新的小部件
createChart(){
让chartWidget={type:'chart',id:'uniqueID2'};
this.widgets.push(chartWidget);
让amchart=this.\u amchart服务
.makeChart(chartWidget.id,{chartOpt});
};

这很容易,但我不得不改变主意

正如我所建议的,Angular有各种生命周期事件,所以我只是设法创建了一个新组件,并像这样使用预定义的AfterViewInit

<!-- Parent template with gridster -->
<div *ngFor="let widget of widgets>
   <chart [widget]="widget"></chart>
</div>
我不包括代码的所有部分,但任何人都应该知道如何继续解决这个问题

// "chart" component
export class Chart implements AfterViewInit {

   @Input() widget:Chart;

   /**
     * After view is inited
     * Now I know that HTML element is in DOM
     */
    ngAfterViewInit() {
        this.createChart();
    }
}