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

272
Vistas
Cómo obtener el nuevo valor de una variable en otra función después de que se cambió dentro de una función diferente, en Angular ...service.ts

Tengo un archivo de servicio auth.service.ts

 export class AuthService { private _isLoggedIn = new BehaviorSubject<boolean>(false); isLoggedIn = this._isLoggedIn.asObservable() constructor(private http: HttpClient) {} //if admin //setter method updateAuthenticated(newValue: boolean){ this._isLoggedIn.next(newValue); } //for guarding routes //getter method isAuthenticated(){ return this.isLoggedIn.subscribe(isLoggedIn =>{ console.log(isLoggedIn); }); }

Al llamar al método updateAuthenticated() dentro de login.component.ts

 this.authService.updateAuthenticated(true); this.route.navigate(['/admin']);

Los cambios realizados en la variable dentro del método updateAuthenticated() no se reflejan si verifico el valor de la variable en el método isAuthenticated() que sigue siendo "falso" como se inicializó. Sin embargo, Verificar el valor dentro del método setter devuelve el valor correcto. Intenté usar BehaviourSubject y no puedo hacerlo bien. ¿Hay alguna manera de obtener el nuevo valor dentro del método isAuthenticated () (método de obtención) o qué estoy haciendo mal con BehaviourSubject?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

La función isAuthenticated() dentro del servicio no emitirá el valor, porque le devolverá toda la instancia observable. Debe suscribirse al isLoggedIn observable directamente dentro del componente donde necesita escuchar el evento BehaviorSubject .

Entonces, en lugar de poner isAuthenticated() es el archivo service.ts, vaya al componente que necesita el valor emitido y haga lo siguiente:

 export class SomeComponent implements OnInit() { latestValue: boolean; constructor(private authService: AuthService) {} ngOnInit() { this.authService.isLoggedIn.subscribe(isLoggedIn =>{ this.latestValue = isLoggedIn; // now use this.latestValue within the component }); } }
about 4 years ago · Santiago Gelvez 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