最初,我使用了一种变通方法,即延迟加载父内容和子内容,但这并不理想,因为延迟加载父属性会导致一些我不想要的行为。
事实上,最好添加一个空
MatExpansionPanelContent
模板到父面板。
为了理解发生了什么,我查看了源代码,发现它们只是使用了
ContentChild
decorator来选择模板:
@ContentChild(MatExpansionPanelContent) _lazyContent: MatExpansionPanelContent;
这将选择
第一
模板与
MatExpansion面板内容
该指令在其范围内适用。添加一个空的满足了家长对
Content儿童
因此,它停止查找,找不到子模板。
以下是代码:
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
Panel 1
</mat-expansion-panel-header>
<!-- Added empty template -->
<ng-template matExpansionPanelContent></ng-template>
<!-- Rest of the parent content is eagerly-loaded -->
<div class="panel-content">
Immediately loaded parent content
<mat-accordion displayMode="flat">
<mat-expansion-panel>
<mat-expansion-panel-header>
Panel 1A
</mat-expansion-panel-header>
<ng-template matExpansionPanelContent>
Lazy-loaded child content
</ng-template>
</mat-expansion-panel>
</mat-accordion>
</div>
</mat-expansion-panel>
</mat-accordion>