2017-01-17 1 views
-2

私は、関数を呼び出す必要がありますが、私はそれが動作しない、私のコンストラクタからアクセスしようとすると、コードは次のとおりです。windows.setTimeout(クラスのコンストラクターで使用)とAngular 2アプリケーションで関数()を呼び出すために使用しないとの違いは何ですか?

constructor(private navCtrl: NavController) { 
    this.createChart(); 
} 

私はsetTimeoutを追加するときしかし、それは作業を開始:

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

誰かがなぜこれが起こっているのか説明できますか?

+2

問題は投稿したコードの外です。 –

答えて

1

コンポーネントでは、コンストラクタではなくngOnInitまたはngAfterViewInitからthis.createChart()を呼び出してみてください。

そのsetTimeoutは、コンポーネントの準備ができるまで、このメソッドを呼び出すことをやめています。だからこそライフサイクルフックの1つに入っている必要があります。

+0

'ngAfterViewInit()'でもかまいません。 'createChart()'はDOM操作のように聞こえるが、もっとコードを見ることなく伝えるのは難しい(downvoteは私じゃなかった) –

+1

それは良い点だ。私はオプションとしてそれを含めるために私の答えを変更しました。 – DerekMT12

関連する問題