2 回答
TA贡献1876条经验 获得超5个赞
不要使用类级别的状态变量来保存用户的收藏状态,而是在 Personajes 数组中的每个用户对象上添加一个状态键。
下面的 allApi 函数详细说明了如何在每个用户对象上添加状态属性。
private allApi() {
this.apiService.getAllApi()
.subscribe((data: any) => {
this.Personajes = data.results.map ( user => {
if ( user && typeof user === 'object') {
user['status'] = true;
}
return user;
});
console.log(data)
})
}
statusFav 函数在用户状态之间切换,即如果最初为假则将其设置为真,反之亦然。
public statusFav (user:any) {
user.status = !user.status
}
您还可以在 ngClass 指令中使用 user.status 的值在“far”和“fas”类之间切换,而不是使用 ngIf 和 ngElse 条件重复按钮代码
<div class="card-columns" *ngIf="suma < 2; else elseBlock">
<div class="card text-center" *ngFor="let personaje of Personajes">
<img class="card-img-top" [src]="personaje.image" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">{{personaje.name}}</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional
content. This content is a little bit longer.</p>
</div>
<button (click)="statusFav(user.status)"
class="btn btn-success btn-block">
<i *ngIf="user.status" [ngClass]="{'fas' :user.status, 'far': !user.status}" class="fa-star"></i>
</div>
</div>
</div>
添加回答
举报