html - 如何使用 ngFor 遍历 Map 并在 Angular 2+ 中按顺序在 html 上显示它们?

标签 html angular typescript hashmap ngfor

我正在使用 Angular 7.x。

我已经实现了使用 *ngFor 的代码,它遍历 Map 并在 html 上显示它们

      <mat-list-item *ngFor="let data of map | keyvalue">
          <div class="col-md-2">
              <p mat-line> {{data.value.name}} </p>           
          </div>            
      </mat-list-item>

它成功显示了一个列表,但问题是它没有按顺序显示它们。

例如,如果我将A和B添加到Map中,它显示为

A B

但是,如果我添加另一个 C,则它显示为

一个 C B

我希望它是 A B C,这是我插入到 Map 的顺序。

如果我使用 console.log,那么它会按照我插入的顺序显示,但不会显示在 html 上。

我必须使用 MAP,但我不知道如何使用。

请帮助我并提前谢谢你。

最佳答案

The Map object holds key-value pairs and remembers the original insertion order of the keys. Any value (both objects and primitive values) may be used as either a key or a value.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

一种解决方案是执行以下操作:

在您的 TS 中添加此方法:

asIsOrder(a, b) {
   return 1;
}

HTML 中将 keyvalue 管道更改为 keyvalue: asIsOrder:

<mat-list-item *ngFor="let data of map | keyvalue: asIsOrder">
    <div class="col-md-2">
        <p mat-line> {{data.value.name}} </p>           
    </div>            
</mat-list-item>

来源:https://github.com/angular/angular/issues/31420

关于html - 如何使用 ngFor 遍历 Map 并在 Angular 2+ 中按顺序在 html 上显示它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54175734/

相关文章:

jquery - 硬编码幻灯片有效但在 WordPress 呈现时中断

css - 卡住一个div中的一个div

unit-testing - Angular2 - 在组件中测试 ngOninit

angular - 无法读取某些 cookie

javascript - 如何在路由器导航中发送数组?

angular - 小时显示 hourSegments Angular 日历

angular - Angular6 ngModelChange 中的去抖时间

css - 在跨度内显示类似于 p 的元素?

html - 对称对齐文本

angular - router-outlet 在页面上占用额外空间(Angular 2)