2017-10-25 14 views
2

以下の抜粋をブログから読んでいます。角2 - DOMがレンダリングを完了した後に関数を実行

$ timeoutは新しいイベントをブラウザのイベントキューに追加します(レンダリングエンジンはすでにこのキューにあります)。新しいタイムアウトイベントの前に実行が完了します。

DOMが完全な* ngForを更新し、結果をレンダリングするようタスクが完了したときにコードを実行するために

setTimeout(() => { 
    // do something after dom finishes rendering 
}, 0); 

を使用するよりも、角度/ JavaScriptでより良い方法がある場合、私は思ったんだけどページ上に

+0

これで正確に何を達成しようとしていますか? –

+0

印刷ウィンドウを起動します。私は怠惰なコンテンツを読み込んでいるので、通常、DOMはコンテンツのレンダリングを終了していないので、ロードスピナーを見ることになります。 – kplates

答えて

1

ライフサイクルフックは、年代順に最後の単発ライフサイクルフックであるngAfterViewInitを試してみることもできます。

https://angular.io/guide/lifecycle-hooks

それはずっとngInitのように動作しますが、ビューと子ビューが初期化した後にそれが起動します。

DOMが終了するたびに発生するものが必要な場合は、ngAfterViewCheckedまたはngAfterContentCheckedを試してみてください。

+0

これは、ページのinitの後でのみ発生し、DOMイベントが完了するたびに発生するとは限りません。 – kplates

+0

@kplatesこの場合、複数回起動できる 'ngAfterViewChecked'のような他のライフサイクルフック。 (私はこれを反映する答えを更新しました) –