角度mat-tab延迟加载并在tab之间保留数据

时间:2019-08-14 14:34:45

标签: angular angular-material internet-explorer-11 angular7 lazy-loading

我正在使用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>

2 个答案:

答案 0 :(得分:1)

只需使用 ng-template 并将要在导航中加载的选项卡保留在 ng-template 内,该选项卡内容只会在单击该选项卡时加载。

答案 1 :(得分:0)

如果具有已知数量的选项卡及其名称,则可以创建一个对象,其中选项卡的名称为键和空值。然后,您遍历模板中该对象的键列表。然后,当用户第一次单击任何选项卡时,它将加载数据并将其存储在全局对象中的正确键中。然后只需从该对象读取数据,而无需发出其他请求。