2016-05-25 5 views
7

Ich bin in der Ngfor Probleme Iteration ein JSON-Objekt mit, es ist meine Vorlage:Iteration ein JSON-Objekt auf Ngfor in Winkel 2

Vorlage:

<h1>Hey</h1> 
    <div>{{ people| json}}</div> 
    <h1>***************************</h1> 
    <ul> 
    <li *ngFor="#person of people"> 
     {{ 
      person.label 
     }} 
    </li> 
</ul> 

Menschen ist das JSON-Objekt, das ich ist versucht, iterieren ich rhe Ergebnis habe (Menschen | json) und nicht immer die Liste, hier ist ein Screenshot:

und zu beenden, ist hier ein Teil Datei von json:

{ 
"actionList": { 
"count": 35, 
"list": [ 
    { 
    "Action": { 
     "label": "A1", 
     "HTTPMethod": "POST", 
     "actionType": "indexation", 
     "status": "active", 
     "description": "Ajout d'une transcription dans le lac de données", 
     "resourcePattern": "transcriptions/", 
     "parameters": [ 
      { 
       "Parameter": { 
        "label": "", 
        "description": "Flux JSON à indexer", 
        "identifier": "2", 
        "parameterType": "body", 
        "dataType": "json", 
        "requestType": "Action", 
        "processParameter": { 
         "label": "", 
         "description": "Flux JSON à indexer", 
         "identifier": "4", 
         "parameterType": "body", 
         "dataType": "json", 
         "requestType": "Process" 
        } 
       } 
      }, 

können Sie mir nicht ein Array

Antwort

12

Ihr people Objekt zu helfen, so dass Sie über sie aus dem Kasten heraus laufen können.

Es gibt zwei Möglichkeiten:

  • Sie wollen eine Unter Eigenschaft iterieren. Beispiel:

    <ul> 
        <li *ngFor="#person of people?.actionList?.list"> 
        {{ 
         person.label 
        }} 
        </li> 
    </ul> 
    
  • Sie möchten über die Schlüssel Ihres Objekts iterieren. In diesem Fall müssen Sie eine benutzerdefinierte Rohr implementieren:

    @Pipe({name: 'keys'}) 
    export class KeysPipe implements PipeTransform { 
        transform(value, args:string[]) : any { 
        if (!value) { 
         return value; 
        } 
    
        let keys = []; 
        for (let key in value) { 
         keys.push({key: key, value: value[key]}); 
        } 
        return keys; 
        } 
    } 
    

    und es auf diese Weise verwenden:

    <ul> 
        <li *ngFor="#person of people | keys"> 
        {{ 
         person.value.xx 
        }} 
        </li> 
    </ul> 
    

    Sehen Sie diese Antwort für weitere Informationen:

+1

danke viel thierry, Ich habe die Pipe hinzugefügt, wie Sie erwähnt haben, in meiner Vorlage habe ich es so genannt und bekomme immer noch nichts:

  • {{ msg.value.Action.label }}
  • // zum Beispiel bekommen alle Etiketten unter jeder Aktion Knoten – Anna

    +0

    , wenn ich es so versuchen:

  • {{ obj.value.list [0] .Action.label }}
  • Ich bekomme das Etikett: A120, und nicht das erste Etikett A1, und ich bekomme nur ein Element nicht eine Liste, ist es normal? – Anna

    +0

    Ich habe versucht, den Index so hinzuzufügen, es hat nicht funktioniert:

  • {{ obj.value.list [i] .Action.label }}
  • // Wie kann ich den Indexwert innerhalb der Liste übergeben? – Anna