nodejs – Error al intentar llamar a mi api de node con mi frontend con angular


espero estén muy bien, verán estoy tratando de conectar una api que he hecho node, tengo una funcional ya alojada en un servidor, pero para el front que estoy haciendo, he hecho un backend local para pruebas muy simple pero recibe los mismo parametros que mi backend ya en producción .

que es este.

const express = require ('express');

const app = express();
app.use(express.urlencoded({extended:false}));
app.use(express.json());
 
app.get('/', function (req, res) {
  res.send('Hello World')
});

app.post('/send-message',(req, res)=> {
    
    if (!req.body.name || !req.body.email || !req.body.message ) {
        return res.status(400).json({
            ok: false,
            message : 'name, email and message are required'
        });        
    }

    const recived_message = req.body;

    console.log('peticion recibida');

    res.json({
        ok:true,
        message:'message recived',
        body : recived_message
    })
  });

 
app.listen(3000 , ()=>{
    console.log('runing on http://localhost:3000');
})

ahora estoy tratando de consumir esta api en angular, pero obtengo el siguiente error siempre que hago el post que la api, no importa si es la local de ejemplo o la que ya tengo en producción.

introducir la descripción de la imagen aquí

lo que no explico es realmente es porque si en postman funciona correctamente.
introducir la descripción de la imagen aquí

prácticamente solo estoy mandando el body al enpoind localhost:3000

y bueno respecto a mi código con angular , tengo lo siguiente:

El servicio de mensajes

import { environment } from './../../environments/environment';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Msj } from '../main/models/messages';


    @Injectable({
      providedIn: 'root'
    })
    export class MessagesService {
    
        constructor(private http: HttpClient) {
        console.log('Messages Services Is running');
        console.log('URI', environment.MESSAGE_URI);
      }
    
      sendMessage(message: Msj) {
        const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');
        console.log('mensaje pasado', message);
        return this.http.post('http://localhost:3000/send-message', JSON.stringify(message), {headers});
      }
    }

que es consumido por este componente:

import { Msj } from './../models/messages';
import { MessagesService } from './../../services/messages.service';
import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';

@Component({
  selector: 'app-contacto',
  templateUrl: './contacto.component.html'
})
export class ContactoComponent implements OnInit {

  clear = false;
  ready = false;
  wrong = false;
  testing = false;
  server = false;

  msj: Msj;

  constructor(private message: MessagesService) { }

  ngOnInit(): void {
    this.msj = {
      name: '',
      email: '',
      message: ''
    };
  }

  working() {
    this.clear = true;
  }

  onSubmit(form: NgForm) {

    if (!this.clear) {
      alert('error por el catcha');
      return;
    }

    if (form.valid) {
      this.message.sendMessage(this.msj).subscribe((response: any) => {
        if (response.ok) {
          this.wrong = false;
          this.testing = false;
          this.ready = true;
          alert('Mensaje enviado');
          this.clean();
          console.log('respuesta:', response);
        }
        else if (!response.ok && 'response.message' in response) {
          this.testing = true;
          alert('error por intento de hacking');
          console.log('respuesta:', response);
        }
        else {
          alert('error desconocido');
          this.server = true;
          console.log('respuesta:', response);
        }
      }, (err) => {
        console.log('Hubo un error', err);
        this.server = true;
        });
    }
    else {
      this.wrong = true;
    }
  }


  clean() {
    this.clear = false;
    this.ready = false;
    this.wrong = false;
    this.testing = false;
    this.server = false;
    this.msj.name = '';
    this.msj.email = '';
    this.msj.message = '';
    this.msj.phone = this.msj.phone ? '' : null;

    setTimeout(() => {
      this.ready = false;
    }, 5000);
    return;
  }

}

esta parte tiene su propio modulo, en el que hago los imports y exports, y bueno este es el modulo y mi mi estructura de carpeta.

introducir la descripción de la imagen aquí

Y bueno no se donde esta el error, la petición ni siquiera llega al servidor creo, porque utilizando una bandera que hace un console.log cuando llega una peticion post.