对于GET请求,我想通过使用每个对象的ID确定哪些结果已被当前用户收藏或喜欢。我有一项服务,该服务确定用户是否已经喜欢某个对象,但是页面上有多个项目,则“喜欢/收藏”状态设置为最后结果的布尔值。我在前端使用* ngFor来遍历项目,所以有没有一种方法可以为每个喜欢的/不喜欢的布尔值设置布尔值?
基本上,我一直在循环浏览,可以验证收藏的服务是否正常运行,但是每个结果都设置为列表中最后一项的布尔值,而不是保留自己的收藏?状态。
HTML:
<div fxFlex *ngIf="houses" class="col-md-12">
<mat-grid-list cols="1" rowHeight="16:5" >
<mat-grid-tile *ngFor="let house of houses" class="tile">
<h4 {{house.address | uppercase}} </h4>
<button mat-button
(click)="addToFavorites(house._id)"><span class="
{{like ? 'fas fa-heart' : 'far fa-heart'}}"></span>
</button>
</mat-grid-tile>
</mat-grid-list>
</div>
通过我的组件:
this.houseService.getHouses()
.subscribe((houses) => {
this.houses = houses;
houses.forEach(function(houseStruct, i) {
liked = false;
var house = this.houses[i]._id;
var liked = this.houses[i].liked;
this.likesService.isLike(house)
.subscribe(resp => { console.log(resp);
this.like = <boolean>resp.exists;
if (this.like) {
liked = true;
} else {
liked = false;
}
})
});
每次HTML遍历房屋之类的东西吗?每个房屋都应保持自己的“喜欢”状态,但是所有房屋都将获得“喜欢”的最终结果。 谢谢!
答案 0 :(得分:0)
设置Task.Run
时,将为所有项目设置该值。 this.like
是指包含循环的单个组件。
您需要为每个项目设置一个值,然后在循环中使用该值,例如设置this
,然后在绑定中使用它。