【发布时间】:2020-02-28 18:28:57
【问题描述】:
我正在尝试使用 ngFor 循环一些项目并为每个项目创建一个 mat-expansion-panel。
我想将每个item的逻辑封装到一个item组件中:
<item></item>
初步尝试:
<mat-accordion>
<div *ngFor="let item of items" >
<item [item]="item"></item>
</div>
</mat-accordion>
项目模板在哪里:
<mat-expansion-panel>
<mat-expansion-panel-header>
Header Content
</mat-expansion-panel-header>
<div>
Expandable content
</div>
</mat-expansion-panel>
这种方法的问题是我的组件在<mat-accordion> 和<mat-expansion-panel> 之间有一个额外的html 元素,这会弄乱手风琴的css。
有没有办法让我的组件提供标题和内容?
<mat-accordion>
<div *ngFor="let item of items" >
<mat-expansion-panel>
<mat-expansion-panel-header>
<!-- put item component header here->
</mat-expansion-panel-header>
<div>
<!-- put item component content here->
</div>
</mat-expansion-panel>
</div>
</mat-accordion>
我已经阅读了 ng-content,但我认为这与我想要的相反,我不想将自定义内容推送到我的组件中,我想从我的组件中提取元素并让它们呈现在父母。
我确实意识到我可以创建 2 个组件,即 item-header 和 item-content。但是,我真的很想将该登录信息保留在一个组件中。
【问题讨论】:
-
将 *ngFor 放在
-
@JMP 不会为每个项目创建一个手风琴吗?
-
@JMP ngFor onaccordion 创建了多个手风琴元素,这是不正确的,应该只有一个。
-
从模板中取出
并循环播放?最后的猜测!