[英]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.