Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro exibido no console

Estava recebendo no console o erro que segue em anexo, e acredito que seja porque a variavel transferencia não estava sendo inicializada.

  transferencias: any[] ; //como o professor mostrou
  transferencias: any[] = []; //como precisei fazer pro erro deixar de ser exibido

Porém na aula o professor não inicializou e nenhum erro foi exibido no console dele ao rodar a aplicação. Gostaria de confimar se realmente é necessário inicializar na mão, ou se o ngOnInit deveria garantir que a variavel seja inicializada pegando os valores do service antes do ngIf fazer o teste do .length. Não entendi este comportamento. Segue o código da classe ExtratoComponent que apresenta o erro:

import { Transferencia } from './../model/transferencia.model';
import { Component, Input, OnInit} from '@angular/core';
import { TransferenciaService } from '../services/transferencia.service';

@Component({
  selector: 'app-extrato',
  templateUrl: './extrato.component.html',
  styleUrls: ['./extrato.component.scss']
})
export class ExtratoComponent implements OnInit {

  transferencias: any[];

  constructor(private service: TransferenciaService) { }

  ngOnInit() {
    this.service.todas().subscribe((transferencias: Transferencia[]) => {
      console.table(transferencias);
      this.transferencias = transferencias;
    });
  }

}

Erro no console

2 respostas
solução!

Oi, Christian! Tudo certo?

Nesse caso eu vejo a necessidade de inicializar na mão. Apesar do projeto do instrutor não ter replicado esse erro, o ngOnInit não pode garantir que a array será inicializada antes do ngIf, até porque está trabalhando com programação assíncrona, então está escutando o retorno de todas().

Eu acho melhor inicializar com uma array vazia para evitar erros e verificações desnecessárias no template.

Bons estudos!

Entendi, muito obrigado. :)