我已經有一個包裝組件加載多個組件,通過使用createComponent
和我想追加一個畫布元素的每個組件。現在我認爲有幾種方法可以做到這一點,並且每種做法我都會陷入困境。Angular2指令等待組件被初始化
1號
在包裝組件訪問的子組件(我已經無法在this.cmpRef = this.target.createComponent(factory);
這樣做,因爲nativeElement是私有財產),我需要知道的子組件被初始化(所以我必須爲此使用服務)。
2號
創建一個指示,並在畫布元素與加載的組件:<canvas projectCanvas class="overlay"></canvas>
現在我已經能夠通過指令本身來訪問模板。 (這很棒但很重複)。
只有這個指令是在組件的視圖被初始化之前構造的,所以我必須創建一個服務來跟蹤組件的狀態。
實際問題
你會如何處理這個?在我看來,沒有逃避服務,或者有辦法檢查視圖是從包裝器組件初始化的嗎?
---------------更新------------------
試圖使版本一個服務,但ngAfterViewInit
/ngOnInit
似乎當組件由createComponent
看到Pliunkr
嗨,感謝您的回覆,在使用'createComponent'加載子組件時'ngAfterViewInit'在加載'createComponent'時不起作用,那麼包裝組件就不會工作。你的例子中的viewChild返回undefined,因爲我猜這個孩子還沒有初始化。 – LVDM
看到這個http://plnkr.co/edit/Wc3aIpC2S8lFOxAJgG9J?p=preview – LVDM
在你的plunkr中,正確調用了C2的ngAfterViewInit()。但是他們是一個拼寫錯誤,你指定爲'initialsed'而不是'initialised'。 – Melou