0

我研究了 angular.io 上可用的代码,并在我的场景中使用mat-tab-group. 但是,我希望能够在*ngFor. 我试过了,指令总是undefined.

我在这里搜索,虽然有几个问题可以解决这个问题,但我没有找到关于如何做到这一点的明确示例。这个想法是我有一个mat-tab-group由几个组成的mat-tabs,它们是通过一个*ngFor指令加载的。在每个选项卡中,我想根据所选索引显示不同的组件。有什么办法可以做到这一点?

是我修改后的 stackblitz:正如你this.adHost is undefined在控制台中看到的那样。

4

1 回答 1

3

您需要更改获取adHost.

@ViewChild(AdDirective, {static: false}) adHost: AdDirective;

它必须是static: false(参见文档),因为它是由 动态呈现的mat-tab,所以它并不总是在模板中。

并且不要调用loadComponentsngOnInit因为视图还没有被渲染,所以adHost将是未定义的。ngAfterViewInit例如使用。我只是评论了它。

更正了堆栈闪电战

编辑

根据您的说明,我更改了很多东西(删除了您的setInterval、使用@ViewChildren而不是ViewChild、用于ngOnChanges知道何时呈现数据等)。

这是stackblitz示例

于 2020-04-29T08:22:05.137 回答