map.entries()
gibt ein MapIterator
, die Sie über .next
mit laufen kann. *ngFor
iteriert nur über Arrays und iteriert nicht mit der iterator protocol, die MapIterator
implementiert.
Maps are intentionally not supported weil sie nicht ordinal sind.
Wenn Sie .entries
in ein Array umwandeln möchten Sie so über Array.from()
tun können, was werden Sie eine Reihe geben, die wie folgt aussieht:
[["key1", "val1"], ["key2", "val2"]]
Sie auch Array.from(map.keys())
verwenden könnte, die ["key1", "key2"]
zurückkehren und man konnte über iterieren es etwa so:
<div *ngFor="let key of mapKeys">{{ myMap.get(key) }}</div>
Sie auch ein Rohr schaffen könnte auch die Karte auf ein Array zu transformieren:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'mapToArray'})
export class MapToArray implements PipeTransform {
transform(value: Map): Array {
const entries = value.entries();
const result = [];
let done = false;
while (!done) {
const { value: currentValue, done: isDone } = entries.next();
result.push(currentValue);
done = isDone;
}
return result;
}
}
Sie könnten dann verwenden, was Sie als *ngFor="let values of myMap | mapToArray"
haben
Zusammengefasst, wie Sie es viele verschiedene Möglichkeiten gibt, sehen Sie eine Karte Iteration über die etwas mit, warum es tut zu tun hat, nicht verarbeiten kann Standardmäßig arbeiten. Es liegt an Ihnen, den besten Weg zu finden, abhängig von Ihrem Anwendungsfall (wenn Sie zum Beispiel die Schlüssel benötigen).
.entries() wird nicht gefunden, als wäre myMap keine Karte. stimmt etwas mit der myMap-erklärung nicht? – Seb
Ist es möglich, dass meine App nicht richtig konfiguriert ist, meine .entries() zu es5 zu übertragen? – Seb