Iterate over object in Angular

前端 未结 17 1537
攒了一身酷
攒了一身酷 2020-11-22 12:19

I am trying to do some things in Angular 2 Alpha 28, and am having an issue with dictionaries and NgFor.

I have an interface in TypeScript looking like this:

17条回答
  •  青春惊慌失措
    2020-11-22 12:53

    Here's a variation on some of the above answers that supports multiple transforms (keyval, key, value):

    import { Pipe, PipeTransform } from '@angular/core';
    
    type Args = 'keyval'|'key'|'value';
    
    @Pipe({
      name: 'mapToIterable',
      pure: false
    })
    export class MapToIterablePipe implements PipeTransform {
      transform(obj: {}, arg: Args = 'keyval') {
        return arg === 'keyval' ?
            Object.keys(obj).map(key => ({key: key, value: obj[key]})) :
          arg === 'key' ?
            Object.keys(obj) :
          arg === 'value' ?
            Object.keys(obj).map(key => obj[key]) :
          null;
      }
    }
    

    Usage

    map = {
        'a': 'aee',
        'b': 'bee',
        'c': 'see'
    }
    
    
    {{o.key}}: {{o.value}}
    a: aee
    b: bee
    c: see
    {{o.key}}: {{o.value}}
    a: aee
    b: bee
    c: see
    {{k}}
    a
    b
    c
    {{v}}
    aee
    bee
    see

提交回复
热议问题