Material Design Liteを使用したangular2コンポーネントがありますが、チェックボックス(おそらく他の要素)はコンポーネントの最初の読み込み時に正しくレンダリングされません。一方、チェックボックスと対話するとmdlスタイルが正しく適用されます。私のコンポーネントでは、私はプロダクションコードでsetTimeoutを使用するのは安全ですか?
ngAfterViewInit() {
componentHandler.upgradeDom();
}
を持っているが、これは私の問題は解決しないので、私はサービスがいくつかのデータを返された直後に実行するのsetTimeoutを使用しました。これはうまくいくようですが、そのようにすることをお勧めしますか?純粋にあなたが(それは今まで何それは遅延を引き起こしている)競合状態を導入する理論的なレベルから、あなたのコードのインとアウトを知らず
this.service.getDetails(this.id)
.finally(() => {
setTimeout(() => {
componentHandler.upgradeDom();
}, 10);
})
.subscribe((details) => {
this.details = details;
});
ありますので、使用できます。あなたが使いたい場所と方法! – Smit
'changeDetection:ChangeDetectionStrategy.OnPush'を試してみてください。[Change Detection Explained](https://blog.thoughtram.io/angular/2016/02/22/angular-2-change)に役立つ情報があります。 -detection-explan.html) –