我们在Angular 9应用程序中拥有一个大型表单,其中包含+30个选择框,每个框中都有+50个选项。在当前版本中,
selects直接在html中实现,下面的<mat-form-field>
仅复制粘贴+30次。
问题是mat-optgroup
i的启动相对较慢,因此会导致巨大的性能不足
+30个选项将分别启动!
所有mat-select
使用相同的mat-optgroup
,因此我们正在寻找一种解决方案,其中mat-optgroup
一次启动
并在所有选择中重复使用?
我们尝试了一种解决方案,其中从mat-optgroup
中提取了ng-template
,但没有成功。要走的路可能是
使用ng-content
,但我们尚未成功实现。使用ng-content
的工作示例将
可以看到很大的帮助,或者非常感谢其他有关性能改进的建议。
谢谢。
<mat-form-field>
<mat-label>Label</mat-label>
<mat-select formControlName="account">
<mat-optgroup *ngFor="let group of groupedAccount" [label]="group.name">
<mat-option *ngFor="let account of group.accounts" [disabled]="account.disabled" [value]="account">
{{ account.number }} - {{ account.name }}
</mat-option>
</mat-optgroup>
</mat-select>
</mat-form-field>
最小再现,仅显示加载时间,在真实应用https://stackblitz.com/edit/angular-ivy-eax4xk
中甚至更长答案 0 :(得分:0)
尝试看看“角度材料”选项卡
“角度材料”选项卡将内容组织到单独的视图中,一次只能看到一个视图。
...延迟加载 默认情况下,选项卡的内容会急切加载。急于加载的选项卡将激活子组件,但在激活该选项卡之前,不会将它们注入DOM。
希望这会有所帮助