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

É possível pegar os dados do objeto pensamento sem chamar o backend ?

Na tela de listagem de pensamentos, os pensamentos ja são carregados com as informações deles, ao clicar no botão excluir, não é possível eu passar essas informações para o novo componente carregado que no caso seria o excluir-componente , sem eu precisar chamar o backend novamente com uma busca por id ? Me parece um pouco redundante fazer essa busca novamente , sendo que ja tenho as informações dela na listagem.

3 respostas
solução!

Olá, Rodrigo! Você está absolutamente correto. Se você já tem as informações carregadas na sua lista de pensamentos, não é necessário fazer outra chamada ao backend para buscar as mesmas informações novamente ao excluir um pensamento.

No Angular, você pode passar dados entre componentes de várias maneiras. Uma das maneiras mais comuns é usar um serviço para compartilhar dados. Aqui está um exemplo de como você pode fazer isso:

Crie um serviço. Este serviço terá uma propriedade para armazenar o pensamento selecionado.

import { Injectable } from '@angular/core';
import { Pensamento } from './models/pensamento.model'; // Substitua pelo seu modelo de Pensamento

@Injectable({
  providedIn: 'root'
})
export class PensamentoService {
  pensamentoSelecionado: Pensamento;

  constructor() { }
}

Use o serviço no seu componente de lista. Quando um pensamento é selecionado para exclusão, armazene esse pensamento no serviço.

import { PensamentoService } from './pensamento.service'; // Substitua pelo caminho correto para o seu serviço

// ...

constructor(private pensamentoService: PensamentoService) { }

// ...

excluirPensamento(pensamento: Pensamento) {
  this.pensamentoService.pensamentoSelecionado = pensamento;
  // ...
}

Acesse o pensamento no seu componente de exclusão. Você pode agora acessar o pensamento selecionado diretamente do serviço.

import { PensamentoService } from './pensamento.service'; // Substitua pelo caminho correto para o seu serviço

// ...

pensamento: Pensamento;

constructor(private pensamentoService: PensamentoService) {
  this.pensamento = this.pensamentoService.pensamentoSelecionado;
}

// ...

Espero que isso ajude! Se você tiver mais perguntas, fique à vontade para perguntar.

Olá Pablo! Mas o angular é stateless , instanciar esse service em dois componentes diferentes, não faz ele ter valores diferentes do atributo pensamentoSelecionado?

Olá, Rodrigo!

Na verdade, os serviços em Angular não são stateless. Eles são singletons, o que significa que uma única instância do serviço é criada e compartilhada entre todos os componentes que o injetam1. Portanto, se você definir um valor para uma propriedade em um serviço em um componente, esse valor será acessível a todos os outros componentes que injetam o mesmo serviço.

Quando falamos sobre “stateless” no contexto de aplicações web, geralmente estamos nos referindo a APIs RESTful stateless.

Nesse contexto, “stateless” significa que cada requisição do cliente para o servidor deve conter todas as informações necessárias para entender a requisição, e não pode tirar proveito de nenhum contexto armazenado no servidor.

Espero que isso esclareça sua dúvida! Se você tiver mais perguntas, fique à vontade para perguntar.