地图管道不起作用

时间:2018-03-15 17:25:26

标签: javascript angular

我尝试显示我的地图的键/值<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");

任何提示?

1 个答案:

答案 0 :(得分:1)

testMap可能是Map,并且地图不应该使用for..in进行迭代。 value没有可枚举的属性,这就是console.info("add")永远不会触发的原因。

如果管道仅限于地图,则应为

transform(map: Map): any {
  return Array.from(map).map(([key, value]) => ({ key, value }));
}