Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ngFor pode receber um json?

Eu tenho na minha pagina um ngFor que recebe uma lista de objetos. Porem, o meu serviço esta retornando um json com esses objetos, portanto eu recebo o seguinte erro:

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

O que eu poderia fazer?

Meu código esta assim:

Componente:

<ul class="my-list" >
    <li class="my-list-item" *ngFor="let time of times" >
        <button class="remove-button" (click)="removeItem(item)" >X</button>
        <h1>
            <a routerLink="/time/{{time._id}}" >
                {{time.nome}}
            </a> 
        </h1>
        <h2>{{time.descricao}}</h2>
    </li>
</ul>
import { Component, OnInit } from '@angular/core';
import { TimeService } from '../time/time.service.component';

@Component({
  selector: 'app-painel-times',
  templateUrl: './painel-times.component.html',
  styleUrls: ['./painel-times.component.css']
})
export class PainelTimesComponent implements OnInit {

  constructor(private TimeService: TimeService) { }

  ngOnInit() {
  }

  times = this.TimeService.lista();

}

Serviço:

 lista(): Promise<TimeComponent[]>{
      return this.http.get(this.url)
        .toPromise()
        .then(res => res.json())
        .catch();
  }
1 resposta
solução!

Eu fiz a seguinte alteração no serviço e no componente:

lista(): Observable<TimeComponent[]> {
    return this.http.get(this.url)
      .map(res => res.json());
  }
import { Component, OnInit } from '@angular/core';
import { TimeComponent } from '../time/time.component';
import { TimeService } from '../time/time.service.component';

@Component({
  selector: 'app-painel-times',
  templateUrl: './painel-times.component.html',
  styleUrls: ['./painel-times.component.css']
})
export class PainelTimesComponent implements OnInit {

  times: TimeComponent[] = [];

  constructor(private TimeService: TimeService) { 
    console.log('chamando construtor')
    TimeService.lista()
    .subscribe(
      times => this.times = times,
      erro => console.log(erro)
      );
  }

  ngOnInit() {
  }

}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software