[英]Dynamically load components inside *ngFor in Angular 9
我研究了 angular.io 上可用的代碼,並使用mat-tab-group
在我的場景中復制了它。 但是,我希望能夠在*ngFor
中使用 ad-host 指令。 我試過了,指令總是undefined
。
我在這里搜索,雖然有幾個問題可以解決這個問題,但我沒有找到關於如何做到這一點的明確示例。 這個想法是我有一個mat-tab-group
由幾個mat-tabs
組成,它們是通過*ngFor
指令加載的。 在每個選項卡中,我想根據所選索引顯示不同的組件。 有什么辦法可以做到這一點?
這是我修改后的 stackblitz:正如你所看到的,它的字面意思是this.adHost is undefined
的。
您需要更改獲取adHost
引用的方式。
@ViewChild(AdDirective, {static: false}) adHost: AdDirective;
它需要是static: false
(參見文檔),因為它是由mat-tab
動態呈現的,所以它並不總是在模板中。
並且不要在ngOnInit
中調用loadComponents
,因為視圖還沒有被渲染,所以adHost
將是未定義的。 例如使用ngAfterViewInit
。 我只是評論了它。
編輯
根據您的說明,我更改了很多內容(刪除了您的setInterval
,使用@ViewChildren
而不是ViewChild
,使用ngOnChanges
知道何時呈現數據等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.