Angular 检查当前用户是否喜欢firebase列表中的帖子

Angular 检查当前用户是否喜欢firebase列表中的帖子,angular,typescript,firebase-realtime-database,ionic3,angularfire2,Angular,Typescript,Firebase Realtime Database,Ionic3,Angularfire2,我正在与这个逻辑作斗争,找不到哪里弄错了。我用的是AngularFire,Ionic 3和Firebase 我有一个新闻提要。它由来自此firebase调用的帖子填充: this.postlist=this.db.list('/posts/').map((arr)=>{return arr.reverse();}) 在我看来,*ngFor循环浏览帖子列表以显示它们 现在就看我被困的地方。 如果当前用户已经喜欢它,我想在帖子上显示一个完整的红心。我希望它是灰色的,如果没有轮廓 在我看来,我有以下几

我正在与这个逻辑作斗争,找不到哪里弄错了。我用的是AngularFire,Ionic 3和Firebase

我有一个新闻提要。它由来自此firebase调用的帖子填充:

this.postlist=this.db.list('/posts/').map((arr)=>{return arr.reverse();})

在我看来,
*ngFor
循环浏览帖子列表以显示它们

现在就看我被困的地方。

如果当前用户已经喜欢它,我想在帖子上显示一个完整的红心。我希望它是灰色的,如果没有轮廓

在我看来,我有以下几点:

<button ion-button icon-start (click)="likePost(post)" *ngIf="!likedPost(post)">
    <ion-icon name="md-heart-outline"></ion-icon> {{post.likes}}
</button>

<button ion-button icon-start (click)="likePost(post)" *ngIf="likedPost(post)">
    <ion-icon name="md-heart" color="redtext"></ion-icon> {{post.likes}}
</button>
当我在控制台中记录结果时,它似乎起作用,但按钮根本没有改变

希望你能帮助我,也能帮助其他有同样问题的人。
祝你有愉快的一天

您必须像这样维护数组对象
post.islikedPost
,并根据您的用例更改其值。然后按如下所示使用它

.html


{{post.likes}
{{post.likes}
另一个变化是,你根本不需要两个按钮。你可以这样做

<button ion-button icon-start (click)="likedPost(post)">
 <ion-icon name="md-heart-outline" *ngIf="!post.islikedPost"></ion-icon> {{post.likes}}
 <ion-icon name="md-heart" color="redtext" *ngIf="post.islikedPost"></ion-icon> {{post.likes}}
</button>

{{post.likes}
{{post.likes}

您必须像这样维护数组对象
post.islikedPost
,并根据您的用例更改其值。然后按如下所示使用它

.html


{{post.likes}
{{post.likes}
另一个变化是,你根本不需要两个按钮。你可以这样做

<button ion-button icon-start (click)="likedPost(post)">
 <ion-icon name="md-heart-outline" *ngIf="!post.islikedPost"></ion-icon> {{post.likes}}
 <ion-icon name="md-heart" color="redtext" *ngIf="post.islikedPost"></ion-icon> {{post.likes}}
</button>

{{post.likes}
{{post.likes}

我不明白这是怎么回事。我试过了,但是我在feed中有多篇文章,那么我怎么能只使用一个公共成员来定义一些文章是否被喜欢呢?好的,然后在
post
中维护该变量。我如何检查post.islikedPost的值,因为post只是firebase列表的一个迭代,不包括islikedPost变量
好的,我在循环中添加了一个调用
{{setLiked(post)}
,以便设置post.islikedPost变量。非常感谢你的帮助!我不明白这是怎么回事。我试过了,但是我在feed中有多篇文章,那么我怎么能只使用一个公共成员来定义一些文章是否被喜欢呢?好的,然后在
post
中维护该变量。我如何检查post.islikedPost的值,因为post只是firebase列表的一个迭代,不包括islikedPost变量
好的,我在循环中添加了一个调用
{{setLiked(post)}
,以便设置post.islikedPost变量。非常感谢你的帮助!您还需要在视图上显示
*ngFor
。您还需要在视图上显示
*ngFor
<button ion-button icon-start (click)="likedPost(post)">
 <ion-icon name="md-heart-outline" *ngIf="!post.islikedPost"></ion-icon> {{post.likes}}
 <ion-icon name="md-heart" color="redtext" *ngIf="post.islikedPost"></ion-icon> {{post.likes}}
</button>