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不是我),这是一个很好的观点。我修改了我的答案,把它作为一个选项。