使用ngFor

时间:2019-03-08 20:13:50

标签: angular ionic-framework ionic4

我正在使用ngFor显示地图。为此,我正在使用键值。看起来像这样:

*ngFor="let upgrade of upgrades | keyvalue"

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

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

2 个答案:

答案 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管道确实按键排序。我怀疑这是ngClassngStyle的要求,因为在源代码注释中提到了这一点。

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

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

我把烟斗弄得纯净,但这取决于你。如果单纯使用Map<>类型,则很难。