2
respostas

Como acessar dados dentro de dados?

Estou tentando fazer coisas além do curso. E me veio uma dúvida. Como eu faço para acessar esse JSON?

{  
   "id":1,
   "nome":"CH A",
   "descricao":"CH A",
   "respostas":[  

   ],
   "setores":[  
      {  
         "id":1,
         "empresa_id":76,
         "nome":"Emper 01",
         "descricao":"empre 01",
      }
   ],
   "checkitens":[  
      {  
         "id":13,
         "pergunta":"001",
         "descricao":"001",
         "categoria_id":2,
         "_joinData":{  
            "id":1,
            "checkiten_id":13,
            "checklist_id":4
         },
         "opcoes":[  
            {  
               "id":1,
               "descricao":"C",
            },
            {  
               "id":2,
               "descricao":"NAO C",
            },
         ]
      },

O html está assim:

<ion-list>
  <ion-item-group *ngFor='let ite of iC'>
    <ion-item>
      <ion-card>
        <ion-item>
          <h2 text-wrap> {{ite.checkitens.pergunta}} </h2>
        </ion-item>

        <ion-card-content>
          <p text-wrap>{{ite.checkitens.descricao}}</p>
        </ion-card-content>

        <ion-row>
          <ion-col col-12>
            <button col-12>
              <div text-wrap>{{ite.checkitens.opcoes.descricao}}</div>
            </button>
          </ion-col>


      </ion-row>

      </ion-card>
    </ion-item>
  </ion-item-group>
</ion-list>

o Component.ts está:

listarD() {
    this.service.listar()
      .subscribe(
        (che) => {
          this.iC= che as IC;
         }
      );
  }

Porém, aparece o seguinte erro:

Chec.html:10 ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

Sei que o erro, é pq não posso iterar sobre um object e sim, sobre um array. Mas, como eu faço isso?

2 respostas

Boa tarde, Douglas! Como vai?

Repare que, como vc bem observou, o problema está ocorrendo pois vc está tentando iterar num objeto! Para resolver, basta vc remover o ngFor e passar o seu objeto para o template sem fazer iteração nenhuma. Até pq não faz sentido fazer iteração quando já se sabe que tem apenas um objeto!

Pegou a ideia? Qualquer coisa é só falar!

Espero que esteja curtindo e aproveitando ao máximo todo o conteúdo dos cursos de Ionic 3!

Grande abraço e bons estudos, meu aluno!

É pq faltou eu dizer que o JSON aí de checkitens e opcoes, ele repete n vezes. Repete o tatno de iten que tiver. Aí dentro desses itens, tem as opcoes, que tbm se repetem.