使用ngFor时不要对Map进行排序

问题描述 投票:0回答:2

我正在使用ngFor来显示地图。为此,我使用的是keyvalue。它看起来像这样:

*ngFor="let upgrade of upgrades | keyvalue"

我现在的问题是,keyvalue对我的地图进行排序。我不想要这个,也不知道如何停止排序。

我尝试使用sortOrder = (a): number => {return (a)};作为compareFn;它有效,但我认为这不是正确的做法吗?

angular ionic-framework ionic4
2个回答
0
投票

因为你正在使用Map,如果你不想对你可以使用的键进行排序

*ngFor="let key of upgrades.keys()"

要么

 *ngFor="let entry of upgrades.entries()"

如果您仍想使用keyvalue管道,那么您的方式是正确的。虽然有点令人困惑。由于compareFn返回一个数字,sortOrder函数可能会理解为null或NaN。我更喜欢(a,b)=>1更清楚。但没关系,排序仍在进行,可能会浪费一些CPU时间。


0
投票

是的,keyvalue管道按键排序。我怀疑这是ngClassngStyle的要求,因为源代码注释中提到了这一点。

你不能停止排序。我只是创建自己的管道。

@Pipe({name: 'entries', pure: true})
export class EntriesPipe implements PipeTransform {
     transform(value: May<any,any>) {
         return Array.from(value.entries());
     }
}

我把管道弄得很纯净,但这取决于你。如果纯粹的话,很难使用Map<>类型。

© www.soinside.com 2019 - 2024. All rights reserved.