Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

222
Vistas
Valor predeterminado para las propiedades cuando no se asigna valor

Estoy convirtiendo el form value en un object que se pasa a la API después de un poco de lógica. Pero cuando convierto las propiedades que no se muestran en la interfaz de usuario en una validación, establece su valor predeterminado en empty , incluso si el tipo de datos es number , boolean o date .

//Clase:

 export class Detail{ id: number; address: string; active: boolean; statusId: number; public constructor(init?: Partial<Detail>) { Object.assign(this, init); } }

//Componente:

 let detail = new Detail(this.DetailForm.value); console.log(detail)

donde en una condición, el campo active y statusId está oculto y el usuario simplemente selecciona la id y escribe la address .

//en el registro de la consola esto da

 id:5 address: 'abc xyz' active: '' statusId: ''

//Salida esperada: espero que cuando la propiedad no esté configurada, debería tener su valor predeterminado.

 id:5 address: 'abc xyz' active: false statusId: 0

//Intentó:

  1. Establezca el valor predeterminado en la clase de propiedad active: boolean = false

  2. Establezca el valor predeterminado en la clase en el constructor.

    init.activo = init.activo ?? falso; init.statusId = init.statusId ?? 0; Objeto.assign(este, init);

Después de Object.assign , volvió a estar empty

Cualquier idea para manejar este problema para todos los tipos de datos (como la date también).

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Yo usaría el operador nulo:

 public constructor(init?: Partial<Detail>) { init.active = init.active ?? false; init.statusId = init.statusId ?? 0; Object.assign(this, init); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

No estoy seguro si me estoy perdiendo algo aquí, pero esto funcionó para mí.

 export class Detail { id: number = 5; address: string = "abc xyz"; active: boolean = false; statusId: number = 0; public constructor(init?: Partial<Detail>) { Object.assign(this, init); } } const test1 = new Detail({ id: 3}) const test2 = new Detail(); const test3 = new Detail({id: 3, statusId: 4, address: "my-address"}); console.log(test1); console.log(test2); console.log(test3);

Rendimiento esperado:

 Detail { id: 3, address: 'abc xyz', active: false, statusId: 0 } Detail { id: 5, address: 'abc xyz', active: false, statusId: 0 } Detail { id: 3, address: 'my-address', active: false, statusId: 4 }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Dado que los valores son cadenas empty (no nulas/indefinidas), puede usar OR || operador en lugar de nulo ?? , como el siguiente:

 public constructor(init?: Partial<Detail>) { init.active = init.active || false; init.statusId = init.statusId || 0; Object.assign(this, init); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda