2
respostas

Botão excluir não exclui ao ser clicado

Boa tarde, ao apertar na lixeira, aparece a opção excluir e cancelar, mas apenas cancelar funciona, a excluir nao ta fazendo a função segue codigo

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

@Component({ selector: 'app-excluir-pensamento', standalone: true, imports: [], templateUrl: './excluir-pensamento.component.html', styleUrl: './excluir-pensamento.component.css' }) export class ExcluirPensamentoComponent implements OnInit {

pensamento: Pensamento = { id: 0, conteudo: '', autoria: '', modelo: '' }

constructor( private service: PensamentoService, private router: Router, private route: ActivatedRoute ) { }

ngOnInit(): void { const id = this.route.snapshot.paramMap.get('id') this.service.buscarPorId(parseInt(id!)).subscribe((pensamento) => { this.pensamento = pensamento }) }

excluirPensamento() { if(this.pensamento.id) { this.service.excluir(this.pensamento.id).subscribe(() => { this.router.navigate(['/listarPensamento']) }) } }

cancelar() { this.router.navigate(['/listarPensamento']) }

}

import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Pensamento } from './pensamento'; import { Observable } from 'rxjs';

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

private readonly API = 'http://localhost:3000/pensamentos'

constructor(private http: HttpClient) { }

listar(): Observable<Pensamento[]> { return this.http.get<Pensamento[]>(this.API) } criar(pensamento: Pensamento): Observable { return this.http.post(this.API, pensamento) }

excluir(id: number): Observable { const url = ${this.API}/${id} return this.http.delete(url) }

buscarPorId(id:number): Observable{ const url = ${this.API}/${id} return this.http.get(url) } }--------------------------------------------------------

2 respostas

Acredito ser a versão do Json-server usado no curso. acredito que nas versões mais novas, o json-server não está aceitando o id como numérico, tanto que testei excluir com ids que eram String pelo postman e funcionou, mas com os númericos igual ela usou não. Só funcionou para mim depois que eu usei a versão exata usada no curso, no caso, a 0.17.0 (Hoje, quando instala vem a versão 1.0.0-alpha.13). caso seja isso, basta mudar a versão no package.json para a versão do curso

"dependencies": { "json-server": "^0.17.0" }

Olá Vinicius, tudo bem?

Não sei se foi a formatação quando você colou o código, mas notei que tanto no método excluir como no método buscarPorId estão faltando os acentos graves que usei na template string da url.

Vou deixar abaixo para você comparar:

    buscarPorId(id: number): Observable<Pensamento> {
        const url = `${this.API}/${id}`
        return this.http.get<Pensamento>(url)
    }
    excluir(id: number): Observable<Pensamento> {
        const url = `${this.API}/${id}`
        return this.http.delete<Pensamento>(url)
    }

Após ajustar, se o erro persistir, continuo à disposição para encontrarmos o motivo.

Espero ter ajudado, bons estudos! :)