2016-11-17 26 views
2

我可以在組件構造訪問ElementRef什麼是ElementRef的狀態時,它的成分構造可

export class MyComponent { 
    constructor(element: ElementRef) { 
     element.nativeElement 

這是什麼DOM元素的狀態:在以下方面

1) DOM - 它已經放入DOM了嗎?它是否被渲染?它是否是子元素DOM元素的創建和追加?

2)在子組件生命週期方面 - 子組件經歷了哪些階段 - onInit,afterContentInit等?

回答

1

內部的每個Angular組件都被表示爲一個元素和一個指令。你可以在Here is why you will not find components inside Angular中閱讀更多關於它的內容。

您可以注入構造函數的elementRef實際上是用於託管組件的元素。現在你的問題。

1)就DOM而言 - 它是否已經放入DOM?它是否被渲染? 它是否是子元素創建並添加的DOM元素?

是的,它被創建並附加到父DOM元素。它還沒有呈現爲引導組件的同步過程,所以瀏覽器沒有重繪的機會。不,它的子組件尚未創建。

2)就兒童組件生命週期而言 - 哪些階段有孩子 組件經歷過 - onInit,afterContentInit等?

所有生命週期掛鉤都是更改檢測的一部分。閱讀更多的Everything you need to know about change detection in Angular。組件樹是在更改檢測之前創建的。所以沒有觸發這個組件的生命週期鉤子,正如我上面所說的,還沒有孩子創建。

2

1)當調用ngAfterViewInit()時,ElementRef.nativeElement是可用的。

2)如果你的意思是包庇兒童,那麼它是ngAfterContentInit()

+0

請問您可以添加更多細節嗎?我正在尋找有關每個領域(DOM和角度週期)的具體問題的答案 –

+0

不確定你的意思。 'ElementRef'在注入時立即可用,'nativeElement' **是** DOM元素。當調用上述回調函數時,DOM元素是可用的,在此之前它只是'null'。這就是'nativeElement'。 –

+0

_ ElementRef在注入時立即可用,_ - 是的,但它可以處於內存中角度創建的狀態,或已經附加到'document'樹中,甚至在UI上呈現的狀態。 –

相關問題