Acredito que haja um erro de lógica no algoritmo utilizado pela professora.
No código da função construtora, como ela desenvolveu, os dados dos contatos nunca serão salvos no localStorage. A função setItem() sempre recebe null.
ATÉ 50% OFF
TÁ ACABANDO!
0 dias
0 horas
0 min
0 seg
Acredito que haja um erro de lógica no algoritmo utilizado pela professora.
No código da função construtora, como ela desenvolveu, os dados dos contatos nunca serão salvos no localStorage. A função setItem() sempre recebe null.
Olá, Hugo.
Tudo bem?
Vamos dar uma olhada mais de perto no código para entender o que pode estar acontecendo. No construtor do ContatoService, a lógica é a seguinte:
localStorage.localStorage, eles são convertidos de string para objeto e atribuídos à propriedade contatos.localStorage, a propriedade contatos é definida como null.contatos é salva novamente no localStorage.O problema que você mencionou parece estar relacionado ao fato de que, se contatosLocalStorage for null, a linha this.contatos = contatosLocalStorage || null; fará com que this.contatos seja null. Em seguida, localStorage.setItem('contatos', JSON.stringify(this.contatos)); salvará null no localStorage, o que não é o comportamento desejado.
Para corrigir isso, você pode inicializar a propriedade contatos com os contatos padrão se contatosLocalStorage for null. Aqui está uma versão ajustada do código:
import { Injectable } from '@angular/core';
interface Contato {
id: number;
nome: string;
telefone: string;
}
@Injectable({
providedIn: 'root'
})
export class ContatoService {
private contatos: Contato[] = [
{ id: 1, nome: 'Ana', telefone: '29 278869420' },
{ id: 2, nome: 'Ágata', telefone: '38 128451235' },
{ id: 3, nome: 'Bruno', telefone: '95 695521583' },
{ id: 4, nome: 'Beatriz', telefone: '25 854986459' },
{ id: 5, nome: 'Carlos', telefone: '94 543197849' },
{ id: 7, nome: 'Daniel', telefone: '56 613692441' },
];
constructor() {
// Tentar obter os dados do localStorage
const contatosLocalStorageString = localStorage.getItem('contatos');
const contatosLocalStorage =
contatosLocalStorageString ? JSON.parse(contatosLocalStorageString) : null;
// Se não houver contatos no localStorage, use os contatos padrão
this.contatos = contatosLocalStorage || this.contatos;
// Salvar os contatos no localStorage
localStorage.setItem('contatos', JSON.stringify(this.contatos));
}
obterContatos() {
return this.contatos;
}
}
Com essa alteração, se não houver contatos no localStorage, a propriedade contatos será inicializada com os contatos padrão e, em seguida, esses contatos serão salvos no localStorage.
Veja se é isso mesmo se faz sentido, e aplique em seu código.
Espero ter ajudado e bons estudos!
Prezado Renan, agradeço o retorno. Sugiro que inclua a sua solução no curso porque alunos iniciantes podem não ver essa solução e ficarem perdidos.