typescript - example - observables angular 5
Cómo obtener datos observables en angular2 (3)
Angular se basa en la base observable en lugar de la promesa a partir de angularjs 1.x, por lo que cuando intentamos obtener datos utilizando http
, devuelve observable en lugar de promesa, como hizo
return this.http
.get(this.configEndPoint)
.map(res => res.json());
luego, para obtener datos y mostrarlos en la vista, tenemos que convertirlos en la forma deseada mediante las funciones de RxJ como la función .map() function and .subscribe()
.map () se utiliza para convertir lo observable (recibido de la solicitud http) a cualquier forma como .json(), .text()
como se indica en el sitio web oficial de Angular,
.subscribe () se usa para suscribir esas respuestas observables y poner toneladas en alguna variable, por lo que la mostramos en la vista
this.myService.getConfig().subscribe(res => {
console.log(res);
this.data = res;
});
Estoy tratando de imprimir el resultado de la llamada http
en Angular
usando rxjs
Considera el siguiente código
import { Component, Injectable, OnInit } from ''@angular/core'';
import { Http, HTTP_PROVIDERS } from ''@angular/http'';
import ''rxjs/Rx'';
@Injectable()
class myHTTPService {
constructor(private http: Http) {}
configEndPoint: string = ''/my_url/get_config'';
getConfig() {
return this.http
.get(this.configEndPoint)
.map(res => res.json());
}
}
@Component({
selector: ''my-app'',
templateUrl: ''./myTemplate'',
providers: [HTTP_PROVIDERS, myHTTPService],
})
export class AppComponent implements OnInit {
constructor(private myService: myHTTPService) { }
ngOnInit() {
console.log(this.myService.getConfig());
}
}
Cada vez que traté de imprimir el resultado de getconfig
siempre regresaba
Observable {_isScalar: false, source: Observable, operator: MapOperator}
aunque devuelvo un objeto json en su lugar.
¿Cómo imprimiría el resultado de getConfig
?
Debe suscribirse al observable y pasar una devolución de llamada que procesa los valores emitidos
this.myService.getConfig().subscribe(val => console.log(val));
this.myService.getConfig().subscribe(
(res) => console.log(res),
(err) => console.log(err),
() => console.log(''done!'')
);