我尝试显示我的地图的键/值<string, string[]>
。
我有这个烟斗:
import { PipeTransform, Pipe } from "@angular/core";
@Pipe({ name: 'keys' })
export class KeysPipe implements PipeTransform {
transform(value, args: string[]): any {
let keys = [];
console.info('KeysPipe');
for (let key in value) {
console.info("add");
keys.push({ key: key, value: value[key] });
}
return keys;
}
}
此地图在控制器中:
this.testMap.set("hi", ['hello', 'bye']);
观点:
<div class="ui-g" *ngFor="let entry of testMap | keys">
Key: {{entry.key}}, value: {{entry.value}}
</div>
从我看到我的管道被调用,因为我看到了console.info('KeysPipe');
,但它从未进入循环,因为我没有看到任何console.info("add");
任何提示?
答案 0 :(得分:1)
testMap
可能是Map
,并且地图不应该使用for..in
进行迭代。 value
没有可枚举的属性,这就是console.info("add")
永远不会触发的原因。
如果管道仅限于地图,则应为
transform(map: Map): any {
return Array.from(map).map(([key, value]) => ({ key, value }));
}