簡體   English   中英

如何等到ng2完成更改DOM

[英]How to wait until ng2 will complete changing the DOM

我的網絡應用程序中有打印功能。 我使用jquery打印插件在打印預覽中只顯示dom中的幾個元素。 我想確保只有在渲染完所有數據后才開始打印。 在當前的實現中 - 有時打印預覽顯示並不是dom中的所有信息(我認為ng2使用某種延遲操作)。

看看樣本:

@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由於模型的變化?

checkout ngAfterViewChecked in docs ,也許這就是你要找的東西。

另一種方法是將*ngIf添加到您的html中。

如果你想在myModel有值之前不渲染任何內容,請執行類似的操作。

<div *ngIf="myModel">
  {{myModel.field1}}
  {{myModel.field2}}
  {{myModel.field3}}
</div>

這將檢查myModel是否有任何值。 如果是,那么它將呈現。

您還可以通過檢查myModel是否沒有值並正確處理來添加“加載文本”

<div *ngIf="!myModel">
     Fetching Data...
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM