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

287
Vistas
Angular: la variable en el alcance no recibe información después de suscribirse a ella

Tengo este fragmento de código que se suscribe desde nuestro propio servicio:

Método getVideo()

 getVideo() { this.watchService.getVideoByVideoString(this.videoId).subscribe( (Response) => { this.videoData = Response; console.log(Response); }, (err) => console.log(err) ); }

Método ngOnInit

 ngOnInit() { this.getVideo(); console.log(this.videoData); }

Pero la variable por si acaso, this.videoData cuando consuelo.iniciar sesión, regresa como indefinido Oo

Sé que sería un error tonto, pero ¿alguien puede ayudarme?

Gracias

======

Actualizado

Al final, hice algunas pruebas y descubrí que podía manipular los datos dentro de la función, en lugar de manipularlos en NgOnInit

respuesta final quedó así:

 getVideo() { this.watchService.getVideoByVideoString(this.videoId).subscribe( (Response) => { this.videoData = Response; if (this.videoData.title == null) { this.titleService.setTitle('InternalVideoChannel'); } else { this.titleService.setTitle('InternalVideoChannel - ' + this.videoData.title); } if (this.videoData.id == 0) { console.log('Video doesnt exist on the database'); this.router.navigate(['/notFound']); } console.log(Response); }, (err) => console.log(err) ); }

Gracias !

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

0

La sintaxis correcta es

 getVideo() { this.watchService.getVideoByVideoString(this.videoId).subscribe( (Response) => { this.videoData = Response; console.log(Response); }, (err) => console.log(err); );

}

about 4 years ago · Juan Pablo Isaza Denunciar

0

Bueno, creo que necesitaría un poco más de contexto, la situación es que si tiene un registro de consola antes de que ocurra la suscripción y el valor se asigna a la variable, siempre obtendrá un valor indefinido para this.videoData.

si solo desea ver si el valor se asignó a la propiedad this.videoData de su clase, la consola.log debe estar junto a la asignación en la suscripción.

nota: tenga en cuenta cualquier pérdida de memoria causada por no darse de baja de un observable.

editar: como puede ver, console.log está fuera del alcance de la suscripción, esto significa que no estará definido, una suscripción observable es por naturaleza asíncrona

 ngOnInit():void { console.log(this.videoData) <- this will be undefined this.getVideo(); // <- async console.log(this.videoData) <- this will be undefined }

la única forma en que puede obtener el valor es consola. iniciar sesión dentro del enlace de suscripción de esta manera:

 getVideo() { this.watchService.getVideoByVideoString(this.videoId).subscribe( (Response) => { this.videoData = Response; console.log(Response); console.log(this.videoData); // your console.log }, (err) => console.log(err) );

El problema es el comportamiento real de un observable, y el observable se comporta como una promesa, por lo que una vez que ejecute el código, console.log se ejecutará antes de que ocurra la asignación real, si desea ver el valor almacenado en "this.videoData " puede tener una función y vincular esa función a un evento de clic o algo así o simplemente agregar el archivo console.log dentro de la suscripción.

Tercera edición. Bueno, si desea acceder al valor, no hay una solución que yo sepa, pero; si desea acceder al valor en un momento específico de su aplicación.

el enfoque sería crear una función a la que llamaría manualmente cada vez que desee ver el valor, tal vez un tiempo de espera, tal vez en un evento de clic que depende de usted.

 logVideoDataValue():void { console.log(this.videoData) }
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