【发布时间】:2020-09-07 06:59:47
【问题描述】:
我正在使用Angular Material Tabs 导航文档的不同部分。我在 TabItem 类中定义了每个选项卡,如下所示:
class TabItem {
constructor(
public component: Type<any>,
public data: TabData,
public active: boolean
) {}
}
在视图中,我循环遍历每个 TabItem 并使用 *ngComponentOutlet 来渲染每个 TabItem 的组件。
<mat-tab-group>
<ng-container *ngFor="let tab of tabs">
<mat-tab>
<ng-template mat-tab-label>
<div class="mat-label-text" (click)="setActiveTab(tab)">{{ tab.data.label }}</div>
</ng-template>
<ng-container *ngComponentOutlet="tab.component"></ng-container>
</mat-tab>
</ng-container>
</mat-tab-group>
一切正常...除了我需要访问每个已解析组件中的当前 TabItem 以访问其 id、标签等。我遇到问题的原因是因为在线示例仅显示如何使用 ngComponentOutlet 作为一个动态组件。我的组件虽然不是动态的...它们是固定的,但是是动态创建的。
我不知道如何使用注射器,因为我处于 for 循环中......除非我为每个单独的项目创建一个注射器。我也不想订阅每个组件中的服务......这太荒谬了。
【问题讨论】:
-
基本上您正在寻找一种通过
*ngComponentOutlet传递参数的方法,对吗? maybe this answer can help。它基本上说这是不支持的,你应该使用不是你想要的动态组件,所以我不知道我是否在帮助你。
标签: javascript angular typescript angular-material