html - 使用 JSON 数据定义时,所有卡片同时扩展而不是单独扩展
问题描述
是否可以单独扩展我的卡,而不是像现在一样,一起扩展?
我已经定义了一个 JSON 数据数组,用于填充卡片的详细信息,但我似乎无法让它们单独扩展。
简单数据
export const DATA = [
{
name: 'Some name 1',
},
{
name: 'Some name 2',
}
];
.ts 文件
export class AppComponent {
data;
expanded = [];
constructor(public toast: MatSnackBar) {
this.data = DATA;
}
}
html
<div class="container">
<mat-card *ngFor="let item of data" #panel [ngClass]="{expanded: expanded[item]}" [class.mat-elevation-z8]="expanded[item]">
<div class="header">
Some content here
<div class="toggle">
<button mat-icon-button>
<mat-icon *ngIf="!expanded[item]" (click)="expanded[panel]=!expanded[item]">
edit
</mat-icon>
<mat-icon *ngIf="expanded[item]" (click)="expanded[item]=!expanded[item]">cancel</mat-icon>
</button>
</div>
</div>
<div class="body" *ngIf="expanded[item]">
Some content here
</div>
</mat-card>
</div>
编辑: 我上面的“逻辑”来自于看到类似这样的实现:
<mat-card #panel *ngFor="let x of [1,2,3]" [ngClass]="{expanded: thisExpands[x]}">
<div class="header">
<div class="toggle">
<button
mat-flat-button
(click)="thisExpands[x]=!thisExpands[x]"
...
然而,这些卡片是从更简单的数据数组生成的。
解决方案
您可以使用index
来访问特定项目forLoop
:
<mat-card *ngFor="let item of data; let i = index">
</mat-card>
您的 HTML 代码:
<div class="container">
<mat-card *ngFor="let item of data; let i = index" #panel [ngClass]="{expanded: expanded[i]}" [class.mat-elevation-z8]="expanded[i]">
<div class="header">
Some content here
<div class="toggle">
<button mat-icon-button>
<mat-icon *ngIf="!expanded[i]" (click)="expanded[i]=!expanded[i]">
edit
</mat-icon>
<mat-icon *ngIf="expanded[i]" (click)="expanded[i]=!expanded[i]">cancel</mat-icon>
</button>
</div>
</div>
<div class="body" *ngIf="expanded[item]">
Some content here
</div>
</mat-card>
</div>
推荐阅读
- python - `operator.__inv__` 是为了什么而存在的?
- python - C&W L2 攻击 - 将对抗样本保存为图像
- javafx - JavaFx:如何从它的文本字段中获取组合框对象?
- r - R:错误在哪里:if 语句覆盖多列
- python - Django - 如何从多选表单字段中的多对多关系中获取详细信息
- mysql - [21000][1242] 子查询返回多于 1 行
- python-3.x - 使用 python 使 Windows 10 通知可点击
- javascript - if else语句javascript使div根据.scrollTop改变颜色
- c++ - Why some top level competitive programmers use #pragma?
- python - 如何拆分字符串章节,使用 python re 包含章节名称?