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

erro ao aparecer a mensagem

listar-pensamento.component.ts

import { Component, OnInit } from '@angular/core';
import { Pensamento } from '../pensamento';
import { PensamentoService } from '../pensamento.service';

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

  listaPensamentos: Pensamento[] = [];
  paginaAtual: number = 1;
  haMaisPensamentos: boolean = true;

  constructor(private pensamentoService: PensamentoService) { }

  ngOnInit(): void {
    this.pegarTodosPensamentos();
  }

  pegarTodosPensamentos() {
      this.pensamentoService.listarPensamentos(this.paginaAtual).subscribe((response) => {
         console.log(response);
         this.listaPensamentos = response;
      }, (error) => {
        console.error(error);
      });
  }

  carregarMaisPensamentos() {
    this.pensamentoService.listarPensamentos(++this.paginaAtual).subscribe((listaPensamentos) => {
      this.listaPensamentos.push(...listaPensamentos);
      if(!this.listaPensamentos.length) {
        this.haMaisPensamentos = false;
      }
    })
  }

}

botao-carregar-mais-comonent.html

<div class="center" *ngIf="haMaisPensamentos; else semMaisPensamentos">
  <button [disabled]="!haMaisPensamentos" class="botao carregar-mais">Carregar mais</button>
</div>
<ng-template #semMaisPensamentos  >
   <p class="mensagem-center ff-inter">Não há mais pensamentos para exibir</p>
</ng-template>

estou recebendo um erro ao mostrar a mensagem quando não há mais pensamentos para listar recebo a aba do console Pensamentos is not iterable Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas
solução!

Olá Matheus, tudo bem?

Pelo que pude entender do seu código, o erro "Pensamentos is not iterable" ocorre porque você está tentando iterar sobre a variável "response" que não é um array.

Para resolver esse problema, você pode verificar se a resposta é um array antes de atribuir à variável "listaPensamentos". Para isso, você pode utilizar a função Array.isArray().

Segue um exemplo de como ficaria o seu código:

pegarTodosPensamentos() {
    this.pensamentoService.listarPensamentos(this.paginaAtual).subscribe((response) => {
        console.log(response);
        if(Array.isArray(response)) {
            this.listaPensamentos = response;
        } else {
            this.haMaisPensamentos = false;
        }
    }, (error) => {
        console.error(error);
    });
}

Dessa forma, se a resposta não for um array, a variável "haMaisPensamentos" será setada como false, e a mensagem "Não há mais pensamentos para exibir" será exibida.

Espero ter ajudado e bons estudos!

perfeito Renan, funcionou perfeitamento, obrigado

Ai sim, fico feliz em ajudar e principalmente por funcionar. Valeu :)