angular - 添加了 Angular 收藏按钮,但颜色没有改变
问题描述
我已经添加了最喜欢的图标,但颜色没有改变,当我刷新时它没有显示为最喜欢的
收藏夹.component.html
<button class="favouri" (click)="isFavoritee(x.ad_Id)">
<i class="fa" [ngClass]="{'fa-heart' : isFavorite , 'fa-heart-o': !isFavorite }"></i>
</button>
favourite.component.ts
isFavoritee(elem: any) {
this.toggle = !this.toggle;
this.favouritedata = [];
const favo = {
'login_Id': this.localservice.getLoginId() ? this.localservice.getLoginId() : '',
'ad_id' : elem ? elem : '',
'category_Id' : 27,
'mode': 'INSERT'
};
this.authservice.post('/api/Favourite/insert', favo).subscribe(data1 => {
this.favouritedata = data1;
console.log(this.favouritedata);
}, error => {
alert('something went wrong');
});
}
解决方案
toggle
当您的ngClass
条件正在检查时,您正在切换组件中的变量isFavorite
。您还需要使用数组,因为您有多个可以设置为收藏的产品。
需要isFavorite
根据传递的id进行设置
isFavorite: boolean[] = [];
isFavoritee(elem: any) {
this.isFavorite[elem] = !this.isFavorite[elem];
// Add other code here
}
然后在您的模板中,更新ngClass
条件。
<button class="favouri" (click)="isFavoritee(x.ad_Id)">
<i class="fa" [ngClass]="{'fa-heart' : isFavorite[x.ad_Id], 'fa-heart-o': !isFavorite[x.ad_Id] }"></i>
</button>
至于为什么刷新时不显示数据,既然你是发送一个 POST 请求来保存喜欢的数据,你应该也有一个 GET 请求来获取相同的数据。您需要根据从 API 收到的响应在您的ngOnInit
和设置中调用此请求。isFavorite
推荐阅读
- c - 具有相同参数的函数不会返回相同的值
- cmake - CMake 检查链接器版本
- delphi - TURLEncoding.Base64.Encode 添加换行符?
- apache-spark - 如何从经过训练的 Spark MLP 模型中提取权重?
- python - 对于向量 v = [2.0, -3.5, 5.1]:求 v 的 L1 范数
- php - 会话开始后运行的 WordPress 中的任何钩子?
- powershell - Out-file , txt 已创建 , 未保存数据
- eclipse - 在 Eclipse 中导入 Maven 项目并将其作为 Java 项目运行的正确方法是什么?
- sql-server - 根据文件夹内容循环 OPENROWSET 语句
- javascript - 可重用的 Alpine.js 组件?