私のweb-appには印刷機能があります。私はjqueryの印刷プラグインを使用して印刷プレビューで表示するためにいくつかの要素domのみです。すべてのデータがレンダリングされたときにのみ印刷を開始するようにしたい。 現在の実装では、印刷プレビューがdomのすべての情報ではなく表示されることがあります(ng2が何らかの遅延操作を使用すると思います)。ng2でDOMの変更が完了するまでの待ち時間
はサンプルを見てみましょう:
@Component(...)
export class MyCoolComponent{|
myModel:MyModel;
print(){
_myService.fetchDataSomehow().subscribe((newData:MyModel)=>{
this.myModel = newData;
// I need to wait until ng2 will adjust dom with new data in synchronous manner
$(this._el).print();
})
}
}
テンプレート:
<div>
{{myModel.field1}}
{{myModel.field2}}
{{myModel.field3}}
//...and a lot of other fields from myModel
</div>
を私はsetTimeout(()=>{...}, 1)
を使用できることを知っているが、それは愚かに見えます。モデルの変更のために角2が調整されるまで待つより堅固なアプローチがありますか?
それを取り扱うことによってフェッチされているのようにしても、「読み込みテキスト」を追加することができますが、それはの各変化のために複数回を発射しますDOM。しかし、最後の変更がDOMに適用されたときに何とか追跡する必要があります。 – Maris
変更を行う要素の数は分かりますか?もしそうなら、ngAfterViewCheckedごとに増加するカウンタを追加することができます。カウンターが限界に達すると、すべてが解決されます。 – kit
@kitすべてのビューを確認した後に何かしたいのですが?これはすべてが変化の検出サイクルを引き起こすので、私は無限ループに巻き込まれるので難しいです。 – Abdel