sir*_*rss 3 typescript ionic-framework angular
我的 ngFor 有问题:对于列表中的每个项目,我都有一个图像,通过单击我想仅显示该图像的详细信息。问题是,如果我单击图像,列表中所有项目的详细信息都会显示出来。
.html:
<div class=" gif" *ngFor="let r of result">
<img [src]="r.images.downsized.url" alt="image" (click)="getDetails()">
<div class="v3" *ngIf="this.clicked">
<ion-list>
<ion-item>
<ion-label>
<h2>username: {{r?.username}}</h2>
<h3>title: {{r?.title}}</h3>
<p>import date:{{r?.import_datetime}}</p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
.ts:
ngOnInit() {
this.clicked = false
}
getDetails(): void {
if (!this.clicked) {
this.clicked = true
}
else {
this.clicked = false
}
}
Run Code Online (Sandbox Code Playgroud)
this在您的情况下是组件实例,因此this.clicked对于所有迭代项目来说都是全局的,这就是为什么所有项目都会显示出来。作为一种解决方案,您可以存储点击的索引:
<div class="gif" *ngFor="let r of result; let i = index">
<img [src]="r.images.downsized.url" alt="image" (click)="clickedIndex = i">
<div class="v3" *ngIf="clickedIndex === i">
<ion-list>
<ion-item>
<ion-label>
<h2>username: {{r?.username}}</h2>
<h3>title: {{r?.title}}</h3>
<p>import date:{{r?.import_datetime}}</p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是将详细信息部分从循环移动到单独的组件中,该组件将接收 @Input 形式的详细信息
| 归档时间: |
|
| 查看次数: |
2501 次 |
| 最近记录: |