angular - El servicio no está devolviendo los datos
Tengo un servicio con un método como el siguiente:
getTotalCountries() {
this.http.get("country").subscribe((response) => {
console.log(response.json());//it is displaying all the data which is return by API
return response.json();
});
}
De manera similar, tengo una función en el componente como se muestra a continuación:
public users: any
countCountry() {
this.count=this.user.getTotalCountries();
console.log(this.count) //it is not returning any data;
}
No puedo averiguar por qué no está devolviendo datos en component.ts. ¿Alguien podría ayudarme, por favor?
Respuesta #1
No está devolviendo nada porque no hay una declaración return.
Debería ser
getTotalCountries(){
return this.http.get("country");
}
y más adelante en algún lugar del código, cuando subscribe hagas la solicitud real
this.user.getTotalCountries().subscribe(val=>this.count=val));
Debes ser consciente de que aquí tienes que lidiar con código asincrónico, por lo que eso es algo que ocurre fuera de orden.
Cuando usted subscribe, la aplicación continúa y la llamada HTTP real se realiza en segundo plano. Cuando la solicitud termina, se invoca la función de retorno de llamada, y ese es el código que usted proporciona como argumento a subscribe.
Respuesta #2
Debería ser:
return this.http.get('country').subscribe { .......}
