中描述的那樣工作我想要獲取元素的offsetLeft,但是我得到的值不正確,除非使用setTimeout。Angular 2指令的生命週期鉤子(ngAfterContentInit)不能像文檔
基本上在指令中我有這樣的:「生命週期掛鉤後指令的內容已經完全初始化被稱爲」
ngAfterContentInit() {
console.log(this.el.nativeElement.offsetLeft);
}
文檔指出此爲ngAfterContentInit。但不是返回40px它返回8px(甚至不知道它在哪裏得到8)。
任何想法,爲什麼它不工作?是否因爲該指令的根元素不被視爲該指令的一部分,只有它的孩子是?
它,但它也看起來非常哈克 – yodalr
@yodalr,儘管它看起來的確哈克 - 它實際上是不。 :)這只是角度運作的方式。這裏的要點是,你**有**在稍後的時間點看內容,一般來說這是確保你做到的最簡單的方法。但是,如果您的內容取決於某些長的http請求(即您的父組件呈現後很長時間)而呈現,那麼選擇正確時間點的唯一可靠方法是明確與內容中的組件進行通信,並通過類似的方式詢問它們意味着他們準備好了。 –