angular - 未应用 Angular *ngFor 键值排序
问题描述
我正在尝试为我正在为我的应用程序提供日志文件的游戏创建实时记分牌。
我在用着
public players = {}; // <string, Player>
包含以字符串为键的玩家列表。play.model.ts 看起来像这样:
export class Player {
public name: string;
public kills: number;
public deaths: number;
constructor(name: string) {
this.name = name;
this.kills = 0;
this.deaths = 0;
}
}
所以我的观点看起来像这样
<tr *ngFor="let player of scoreboardService.players | keyvalue: sortByKills">
<td>{{ player.value.name }}</td>
<td>{{ player.value.kills }}</td>
<td>{{ player.value.deaths }}</td>
</tr>
在这里我使用 keyvalue 和比较器函数 sortByKills()
sortByKills = (p1: KeyValue<string, Player>, p2: KeyValue<string, Player>): number => {
return p2.value.kills - p1.value.kills;
}
该表正确更新,但未应用排序。有什么建议么?
解决方案
看看我用自定义管道放入Demo的例子
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'keyvalue'
})
export class CustomPipe implements PipeTransform {
transform(row: any[],sortByKills:number=-1): any {
// make your filters here
return row.sort((a, b) => sortByKills*(parseFloat(a.kills) - parseFloat(b.kills)));
}
}
推荐阅读
- reactjs - 字体真棒图标在本地运行完美,但在下一个 js 中不能在生产中运行
- selenium - 在 TestNG Selenium 中使用并行测试在两个相同的浏览器中运行两个测试用例(方法)
- reactjs - 全局样式不适用于重置边距
- fetch-api - 如何使用 Sveltekit 或 Sapper 中的页面外组件获取数据?
- python - 只有整数标量数组可以转换为标量索引。为什么 arr[i].shape 不起作用?
- python - 是否可以在 twilio 验证电子邮件中输出收件人电子邮件?
- python - 有没有办法在 FastAPI 中漂亮地打印/美化 JSON 响应?
- firebase - 断言失败:第 67 行 pos 16: 'map['projectId'] != null': 'projectId' cannot be null
- php - 根据时隙对一周中的几天进行排序
- python - 从一个参考列中减去所有列的简单方法。求和并将其平方并存储