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

579
Vistas
Angular 2 Component escucha el cambio en el servicio

Tengo una pregunta simple sobre la detección de cambios.

Tengo un componente y un servicio (global) con un booleano dentro. ¿Cómo puedo hacer que el componente escuche ese booleano y ejecute una función si ese booleano cambia?

¡Gracias!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Dependiendo de cómo cambie ese booleano, podría exponerlo como un Observable<boolean> en su servicio y luego suscribirse a esa transmisión en su componente. Su servicio sería algo como:

 @Injectable() export class MyBooleanService { myBool$: Observable<boolean>; private boolSubject: Subject<boolean>; constructor() { this.boolSubject = new Subject<boolean>(); this.myBool$ = this.boolSubject.asObservable(); } ...some code that emits new values using this.boolSubject... }

Entonces en tu componente tendrías algo como esto:

 @Component({...}) export class MyComponent { currentBool: boolean; constructor(service: MyBooleanService) { service.myBool$.subscribe((newBool: boolean) => { this.currentBool = newBool; }); } }

Ahora, dependiendo de lo que necesite hacer con ese valor bool, es posible que deba hacer otras cosas para que su componente se actualice, pero esta es la esencia de usar un observable. Tenga en cuenta que querrá darse de baja de la transmisión myBool$ en algún momento para evitar pérdidas de memoria y efectos secundarios inesperados.

Otra opción es usar la canalización asíncrona dentro de su plantilla en lugar de suscribirse explícitamente a la transmisión en el constructor. Eso también asegurará que la suscripción se elimine automáticamente. De nuevo, sin embargo, eso depende de lo que necesite hacer exactamente con los valores booleanos.

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de Sam es completamente correcta. Solo me gustaría agregar que también podría aprovechar un setter de TypeScript para activar automáticamente el evento para cambios:

 @Injectable() export class MyBooleanService { myBool$: Observable<boolean>; private boolSubject: Subject<boolean>; private _myBool: Boolean; constructor() { this.boolSubject = new Subject<boolean>(); this.myBool$ = this.boolSubject.asObservable(); } set myBool(newValue) { this._myBool = newValue; this.boolSubject.next(newValue); } }
over 4 years ago · Santiago Trujillo 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