Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

308
Views
Angular: el tamaño dinámico del componente no se actualiza

Estoy usando un componente reutilizable privado interno. Mi problema es que el ancho no se actualiza dinámicamente cuando se actualiza la ventana gráfica. Aquí hay fragmentos de código relevante:

componente.ts

 export class Component { modalWidth: string | undefined; ngOnInit() { this.breakpointServiceSubscription$ = this.breakpointService.breakpoint$.subscribe(() => { if (this.breakpointService.isSmall()) { console.log("small") this.modalWidth = "50px"; } else { this.modalWidth = "500px"; } } }

componente.html

 <modal [width]="modalWidth">...</modal>

Se supone que el ancho y el alto cambian dinámicamente a medida que se cambia el tamaño del navegador, pero permanece del mismo tamaño que cuando se representó. Si abro el modal en una ventana gráfica específica, el tamaño siempre es correcto, solo es un problema una vez que intento cambiar el tamaño con el modal abierto.

Al iniciar sesión en la suscripción al servicio de punto de interrupción, siempre es correcta y se registrará dinámicamente.

Intenté convertir modalWidth y modalHeight en observables y usar una tubería asíncrona en el html, pero aún tiene el mismo comportamiento.

¿Algún consejo o sugerencia?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

puede inyectar ChangeDetectorRef en el componente y después de cambiar modalWidth, llame a changeDetectorRef.detectChanges() para permitir que angular aplique el cambio inmediatamente a la vista.

 constructor(private cdr: ChangeDetectorRef) {} ngOnInit() { this.breakpointServiceSubscription$ = this.breakpointService.breakpoint$.subscribe(() => { if (this.breakpointService.isSmall()) { console.log("small") this.modalWidth = "50px"; } else { this.modalWidth = "500px"; } // apply change immediately this.cdr.detectChanges(); }
about 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!