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