• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

167
Views
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).

over 3 years ago · Juan Pablo Isaza
3 answers
Answer question

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); }
over 3 years ago · Juan Pablo Isaza Report

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 }
over 3 years ago · Juan Pablo Isaza Report

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); }
over 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error