我正在使用ngFor显示地图。为此,我正在使用键值。看起来像这样:
*ngFor="let upgrade of upgrades | keyvalue"
我现在的问题是,keyvalue对我的地图进行了排序。我不想要这样,也不知道如何停止排序。
我尝试使用sortOrder = (a): number => {return (a)};
作为compareFn;它奏效了,但是我不认为这是正确的做法?
答案 0 :(得分:0)
因为您正在使用Map,所以如果不想对密钥进行排序 您可以使用
*ngFor="let key of upgrades.keys()"
或
*ngFor="let entry of upgrades.entries()"
如果您仍然想使用键值管道,那么您的方法就是正确的方法。虽然有点混乱。
由于compareFn返回一个数字,因此您的sortOrder函数可能会理解为null或NaN。我希望(a,b)=>1
更加清晰。但这并不重要,排序仍在进行,可能会浪费一些CPU时间。
答案 1 :(得分:0)
是的,keyvalue
管道确实按键排序。我怀疑这是ngClass
和ngStyle
的要求,因为在源代码注释中提到了这一点。
您不能停止排序。我只是创建自己的管道。
@Pipe({name: 'entries', pure: true})
export class EntriesPipe implements PipeTransform {
transform(value: May<any,any>) {
return Array.from(value.entries());
}
}
我把烟斗弄得纯净,但这取决于你。如果单纯使用Map<>
类型,则很难。