iteration a json object on Ngfor in angular 2

ぐ巨炮叔叔 提交于 2019-11-26 09:13:28

问题


I\'m having trouble iteration a json object in the Ngfor, there is my template :

template:

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

people is the json object that I\'m trying to iterate, I\'m having rhe result of (people | json) and not getting the list, here is a screenshot:

and to finish, here is a part of json file :

{
\"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\"
                    }
                }
            },

please feel free to help me


回答1:


Your people object isn't an array so you can iterate over it out of the box.

There is two options:

  • You want to iterate over a sub property. For example:

    <ul>
      <li *ngFor="#person of people?.actionList?.list">
        {{
          person.label
        }}
      </li>
    </ul>
    
  • You want to iterate over the keys of your object. In this case, you need to implement a custom pipe:

    @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;
      } 
    } 
    

    and use it this way:

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

    See this answer for more details:

    • How to display json object using *ngFor


来源:https://stackoverflow.com/questions/37431578/iteration-a-json-object-on-ngfor-in-angular-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!