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

Não está gravando o texto do comentário

Olá.. tudo bem?

Não estou conseguindo encontrar meu erro neste caso.

O comentário está gravando, mas o texto não:

Tanto é que no terminal da api fica como null:

{ comment_date: 1633721146987,
  comment_text: null,
  user_name: 'alvaro' }
Comment added { date: 1633721146987, text: null, userName: 'alvaro' }

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

comentario.ts:

export interface Comentario {
  date: Date
  text: string
  userName: string
}
export type Comentarios = Array<Comentario>

comentarios.service.ts:

incluiComentario(id: number, commentText: string): Observable<Comentario>{
    return this.http.post<Comentario>(`${API}/photos/${id}/comments`, commentText)
  }

comentarios.componet.ts:

gravar(): void{
    const comentario = this.comentarioForm.get('comentario')?.value ?? ''
    this.comentarios$ = this.comentariosService
      .incluiComentario(this.id, comentario)
      .pipe(
        switchMap(()=>this.comentariosService.buscaComentario(this.id)),
        tap(()=>{
          this.comentarioForm.reset();
          alert('Comentário inserido com sucesso!')
        })
      )
  }

comentarios.componet.html:

<div *ngIf="comentarios$ |async as comentarios">
  <ul class="list-unstyled">
    <li *ngFor="let comentario of comentarios">
      <p class="text-dark font-weight-bold mr-1">{{comentario.userName}}</p>
        <em>{{comentario.date |date: "dd/MM/yyyy HH:mm"}}</em>
        <p class="breack-word mb-2">{{comentario.text}}</p>
    </li>
  </ul>
</div>

Obrigado.

2 respostas
solução!

Boa tarde Eliezer,

No arquivo "comentarios.service.ts", o commentText precisa ser encaminhado como objeto, então ficaria da seguinte forma:

incluiComentario(id: number, commentText: string): Observable<Comentario>{
    return this.http.post<Comentario>(`${API}/photos/${id}/comments`, { commentText }); // <----- AQUI
  }

Era isso! Muito obrigado!