如何使用 angular4 加载在选项卡中添加的组件?

Pri*_*nce 2 angular2-forms angular

我正在使用 Angular4 和 Angular Material2。

我有以下代码

<md-tab-group color="primary">
        <md-tab label="Employee">
            <app-employee></app-employee>
        </md-tab>
        <md-tab label="Department">
            <app-department></app-department>
        </md-tab>
        <md-tab label="Attendance">
            <app-attendance></app-attendance>
        </md-tab>
    </md-tab-group>
Run Code Online (Sandbox Code Playgroud)

现在,所有组件均已初始加载,但我想在选择相应选项卡时加载特定组件。

Ang*_*hef 5

注意。Angular Material 最近已更新,组件已重命名,例如<md-tab>现在为<mat-tab>. 文档:https: //material.angular.io/components/tabs/api

您想要的是延迟加载选项卡内容。根据 Angular 材料文档,目前似乎不可能。

以下是一些解决方法:

selectedIndex选项 1. 根据选项卡组的属性激活子组件

<mat-tab-group color="primary" #tabGroup>
  <mat-tab label="Employee">
    <app-employee *ngIf="tabGroup.selectedIndex === 0"></app-employee>
  </mat-tab>
  <mat-tab label="Department" #tabDepartment>
    <app-department *ngIf="tabGroup.selectedIndex === 1"></app-department>
  </mat-tab>
  <mat-tab label="Attendance">
    <app-attendance *ngIf="tabGroup.selectedIndex === 2"></app-attendance>
  </mat-tab>
</mat-tab-group>
Run Code Online (Sandbox Code Playgroud)

选项 2. 监听selectedIndexChange()选项卡组上的事件

并在该事件的事件处理程序中动态加载一些内容。

就像是:

<mat-tab-group (selectedIndexChange)="loadDynamicContent()">
  <mat-tab>
    {{ dynamicContent }}
  </mat-tab>
</mat-tab-group>
Run Code Online (Sandbox Code Playgroud)

我在这里找到了这个想法:https ://stackoverflow.com/a/45980187