Tenés que utilizar async / await y para eso la consulta debe estar en una promesa (promise)
Esperar la respuesta de un HTTP en Angular
Hola,
estoy haciendo uan aplicación en Angular y quiero cargar el contenido JSON de una URL externa en mi programa.
desde el archivo home.components.ts hago la llamada al servicio:
ngOnInit() {
this.camp = this._homeService.getCamp();
console.log (this.camp);
}
Y el servicio ejecuta el codigo
getCamp() {
this.http.get('http://url.com/cliente/json/prov_camp.php')
.subscribe ( campERP => {
this.campX = campERP;
console.log(this.campX);
return this.campX;
}
)
}
El problema es que la respuesta del HTTP puede tardar unos 30 segundos en llegar y mientras ya se me carga toda la pagina, dando que this.camp del home.components.ts esta vacio, pero al cabo de un rato muestra el resutlado de this.campX del servicio (cuando ya ha cargado)
Como puedo hacer para que el programa se "espere" mientras esta cargando la info de la URL?
Gracias
Respuestas
Hola Xavi,
Sin tener mucho conocimiento del tema te paso dos enlaces que espero que te sirvan de ayuda
https://docs.angularjs.org/api/ng/service/$timeout
https://es.stackoverflow.com/questions/42612/esperar-tiempo-para-que-carguen-los-componentes-y-mostrar-pagina
Suerte :/