Búsqueda de sitios web

angular - Cambiar el valor de registerForm (booleano a número)


Así que tengo un pequeño problema para entender cómo convertir un booleano a número

Problema :

He estado intentando convertir mi registerForm.value.aleas, que es una casilla de verificación, a un número (0 falso, 1 verdadero), para hacer un método POST (la API espera un valor 1 o 0), pero no puedo encontrar una manera de hacerlo ya que registerForm.value siempre me devuelve su valor por defecto (false si la casilla no está marcada y true si lo está).

Lo que he intentado :

He intentado usar ? 1 : 0 pero no creo que registerForm lo acepte y no veo ninguna otra manera

Ejemplo de código :

app.component.ts

  postParams(){
const token = JSON.parse(window.localStorage.getItem('token'));
const aleas = this.registerForm.value.aleas? 1 : 0;
return this.httpClient.post(`this.url?token=`,
  {
    token: token.token,
    is_alea_chantier: aleas,

  })
  .subscribe(
    data => {
      console.log("POST PARAMS DONE",data)
    },
    error => {
      console.log("POST PARAMS FAILED", error)
    }

  )
}


get f() {
 return this.registerForm.controls;
  }

onSubmit{
  this.submitted = true;
  console.log(this.registerForm.value.title)
  //stop here if form is invalid
  if (this.registerForm.invalid){
    console.log("INVALID FORM")
     return;
   } else {
    console.log("VALID FORM")
    this.postParams();
   }
 }

app.component.html

<div class="container">
  <form [formGroup]="registerForm" (ngSubmit)="onSubmit()" >
    <input formControlName="aleas" type="checkbox" class="custom-control-input" id="customCheck" 
    name="example1">
  </form>
</div>

No dudes en decirme si necesitas algo más. Si alguien puede guiarme en el camino correcto, realmente lo apreciaría, ¡gracias por tu tiempo!

EDITAR

Todas las respuestas funcionan, pero parece que ahora es un problema del backend, ¡gracias!

Respuesta #1

Necesitas usar la sintaxis correcta para acceder al valor del form-control:

const aleas = this.registerForm.controls['aleas'].value ? 1 : 0;

Respuesta #2

Tienes algunos métodos para convertir tu booleano a un número, que funcionan tanto con el compilador como en tiempo de ejecución, pero necesitas obtener el valor de tu formControl de la manera correcta antes de eso.

const aleasFirst = this.registerForm.get("aleas").value ? 1 : 0; // your method
const aleasSecond = Number(this.registerForm.get("aleas").value);
const aleasThird = +this.registerForm.get("aleas").value; // unary operator