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

Erro na hora de aplicar o ngFor no extrato.component.html

Eu fui seguindo os passos da aula, porém na hora de aplicar o ngFor no template do componente de extrato está dando erro Mensagem de erro:

Property 'transferencia' does not exist on type 'ExtratoComponent'. Did you mean 'transferencias'?ngtsc(2551)
extrato.component.ts(8, 18): Error occurs in the template of component ExtratoComponent.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeArquivo app.component.ts:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss'],
})
export class AppComponent {
  public title = 'bytebank';
  public transferencias: any[] = [];

  transferir(evento) {
    console.log(evento);
    const transferencia = { ...evento, data: new Date() };
    this.transferencias.push(transferencia);
  }
}

Arquivo app.component.html:

<app-nova-transferencia
  (aoTransferir)="transferir($event)"
></app-nova-transferencia>

<app-extrato [transferencias]="transferencias"></app-extrato>

Arquivo extrato.component.ts:

import { Component, Input, OnInit } from '@angular/core';

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

  constructor() { }

  ngOnInit(): void {
  }

}

Arquivo extrato.component.html:

<table>
  <thead>
    <th>Data</th>
    <th>Valor</th>
    <th>Destino</th>
  </thead>
  <tbody>
    <tr *ngFor="let transferencia of transferencias"></tr>
    <td>{{ transferencia.data }}</td>
    <td>{{ transferencia.valor }}</td>
    <td>{{ transferencia.destino }}</td>
  </tbody>
</table>

<div *ngFor="let transferencia of transferencias">
  <p>Data: {{ transferencia?.data }}</p>
  <p>Valor: {{ transferencia?.valor }}</p>
  <p>Destino: {{ transferencia?.destino }}</p>
</div>
1 resposta
solução!

Olá Guilherme, tudo bom?

A diretiva *ngFor vai pegar cada item de transferencias e colocar em uma propriedade transferencia. Certo? Mas transferencia só vai poder ser passado para elementos filhos do elemento que recebe o *ngFor. Como você fez na div, portanto <tr> deve ser pai de todos os <td>, dessa forma.

<tr *ngFor="let transferencia of transferencias">
    <td>{{ transferencia.data }}</td>
    <td>{{ transferencia.valor }}</td>
    <td>{{ transferencia.destino }}</td>
</tr>

Entenda tr como uma linha de table e td como dados dessa linha.

Espero ter ajudado, Guilherme. Bons estudos.