Olá Elison, tudo bem?
Baixei seu projeto e não encontrei nenhum erro do lado do front, o que me levou a investigar nossa API fake, o JSON-Server
.
Na versão que utilizei no curso, consigo passar o id
como number
, mas na versão que você está utilizando percebi que gera esse erro 404.
Testei então passar o id
como string
conforme documentação e deu certo. Vou te mostrar o passo a passo:
- Nos arquivos
excluir-pensamento.component.ts
e pensamento.component.ts
, mude a propriedade id
do objeto e, ao invés de 0, passe como valor string
vazia, assim:
pensamento: Pensamento = {
id: '',
conteudo: '',
autoria: '',
modelo: ''
}
- No arquivo
excluir-pensamento.component.ts
, no método ngOnInit
, remova a função parseInt
:
ngOnInit(): void {
const id = this.route.snapshot.paramMap.get('id')
this.service.buscarPorId(id!).subscribe((pensamento) => {
this.pensamento = pensamento
})
}
- Na interface
pensamento.ts
, mude o tipo do id
de number
para string
:
export interface Pensamento
{
id?: string
conteudo: string
autoria: string
modelo: string
}
- No arquivo
pensamento.service.ts
, mude o tipo do parâmetro id
dos métodos excluir
e buscarPorId
de number
para string
:
excluir(id: string): Observable<Pensamento> {
const url = `${this.API}/${id}`
return this.http.delete<Pensamento>(url)
}
buscarPorId(id: string): Observable<Pensamento> {
const url = `${this.API}/${id}`
return this.http.get<Pensamento>(url)
}
- No arquivo
db.json
, o id
também precisará ser modificado para ficar do tipo string
, acrescentando as aspas:
{
"pensamentos": [
{
"id": "1",
"conteudo": "Lista simulação DB em andamento",
"autoria": "Molniox",
"modelo": "modelo1"
},
...
}
Os próximos pensamentos que você criar já terão o id
no formato string
.
Acessando o endpoint
http://localhost:3000/pensamentos/5 agora, não aparece mais o erro 404. Testei e consegui excluir os pensamentos e sem erros no console, dessa vez! :)
Faça esses ajustes e veja se funciona aí também.
Qualquer dúvida adicional, continuo à disposição para ajudar!
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓