Angular 带TypeScript的角度管道中的MapToiTable
尝试以角度实现管道。在意识到ngFor不适用于地图之后。一些研究让我相信,未来的功能将解决这个问题,但与此同时,一个可映射的管道是答案 我有以下代码:Angular 带TypeScript的角度管道中的MapToiTable,angular,typescript,typescript2.0,angular-pipe,Angular,Typescript,Typescript2.0,Angular Pipe,尝试以角度实现管道。在意识到ngFor不适用于地图之后。一些研究让我相信,未来的功能将解决这个问题,但与此同时,一个可映射的管道是答案 我有以下代码: import {Pipe, PipeTransform} from '@angular/core'; @Pipe({ name: 'mapToIterable' }) export class MapToIterablePipe implements PipeTransform { transform(map: Map<stri
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'mapToIterable'
})
export class MapToIterablePipe implements PipeTransform {
transform(map: Map<string, Object>, args: any = []): any {
const a: any[] = [];
console.log(map.keys()); // <- works as expected
for (const k in map) {
if (map.has(k)) {
console.log("hello"); // <- never executes
console.log(k);
a.push({key: k, val: map.get(k)});
}
}
console.log(a); // <- always empty
return a;
}
}
export const MAPTOITERABLE_PROVIDERS = [
MapToIterablePipe
];
从'@angular/core'导入{Pipe,PipeTransform};
@烟斗({
名称:“MapToItemable”
})
导出类MapToItemablePipe实现PipeTransform{
转换(map:map,args:any=[]):any{
常数a:任意[]=[];
console.log(map.keys());//map
“键”不是对象键,不能通过object.keys()
或操作符中的获取
考虑到map.keys()
for (const key of Array.from(map.keys())) {
// this check is unneeded
// if (map.has(k)) {
...
}
或者在
或者只是
const a: any[] = Array.from(map.entries()).map(([key, val]) => ({ key, val }));
由于TypeScript实现扩展运算符的方式,[…iterable]
的工作方式与2.2及更低版本中的Array.from(iterable)
的工作方式不同。的可能重复
const a: any[] = Array.from(map.entries()).map(([key, val]) => ({ key, val }));