我正在使用Angular Material mat-tab,每个选项卡都包含动态表单的内容。
我正在尝试使用延迟加载方法,以避免在开始时加载所有选项卡内容,而仅按选项卡加载以特别在Internet Explorer中提高性能。
我面临的问题是,每次我更改它都会重新加载选项卡,并且丢失输入的数据。
有什么建议在这里使用延迟加载吗?
<mat-tab-group [(selectedIndex)]="selectedTab"
(selectedIndexChange)="tabChange($event)">
<mat-tab #tab *ngFor="let page of dataset; let tabIndex =
index; trackBy: tabIndex;" [label]="page.title">
<ng-container *ngFor="let section of
page.groupedSections">
//I am loosing the data here if i do lazy-loading
<dynamic-form [fields]="section.fields"></dynamic-form>
</ng-container>
</mat-tab>
</mat-tab-group>
答案 0 :(得分:1)
只需使用 ng-template
并将要在导航中加载的选项卡保留在 ng-template
内,该选项卡内容只会在单击该选项卡时加载。
答案 1 :(得分:0)
如果具有已知数量的选项卡及其名称,则可以创建一个对象,其中选项卡的名称为键和空值。然后,您遍历模板中该对象的键列表。然后,当用户第一次单击任何选项卡时,它将加载数据并将其存储在全局对象中的正确键中。然后只需从该对象读取数据,而无需发出其他请求。