Javascript 在Angular 2应用程序中使用windows.setTimeout(在类的构造函数中使用)和不使用来调用函数()之间的区别?

Javascript 在Angular 2应用程序中使用windows.setTimeout(在类的构造函数中使用)和不使用来调用函数()之间的区别?,javascript,angular,typescript,Javascript,Angular,Typescript,我必须调用一个函数,但当我试图从构造函数访问它时,它不起作用,代码是: constructor(private navCtrl: NavController) { this.createChart(); } 但是,当我添加setTimeout时,它开始工作: constructor(private navCtrl: NavController) { window.setTimeout(_ => { this.createChart(); }, 1000);

我必须调用一个函数,但当我试图从构造函数访问它时,它不起作用,代码是:

constructor(private navCtrl: NavController) {   
  this.createChart();  
}
但是,当我添加
setTimeout
时,它开始工作:

constructor(private navCtrl: NavController) {
  window.setTimeout(_ => {
    this.createChart();
  }, 1000);
}

有人能解释为什么会发生这种情况吗?

在组件中,尝试从
ngOnInit
ngAfterViewInit
调用
this.createChart()
,而不是调用构造函数


setTimeout
将推迟调用该方法,直到组件准备就绪。因此,这就是为什么它需要位于其中一个生命周期挂钩中。

问题不在您发布的代码范围内。也可能是
ngAfterViewInit()
createChart()
听起来像是DOM操作,但很难说,如果看不到更多的代码(downvote不是我),这是一个很好的观点。我修改了我的答案,把它作为一个选项。