This question already has an answer here:
- How do I return the response from an Observable/http/async call in angular? 8 answers
- How do I return the response from an asynchronous call? 34 answers
I'm having trouble with setting up simple GET query with a REST API.
For demonstration purposes I used this REST endpoint: https://jsonplaceholder.typicode.com/posts/1
It seems that all received data is lost when leaving the scope of the subscribe method. I followed multiple tutorials, that also said I would get a error when accessing attributes without typecasting, but it works fine for me. Why is that so?
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import * as _ from 'lodash';
@Injectable()
export class TestService {
constructor(private http : HttpClient ) { }
private URI = 'https://jsonplaceholder.typicode.com/posts/1';
o : object;
//Object { userId: 1, id: 1, title: "sunt aut facere repellat provident
//…", body: "quia et suscipit suscipit recusanda…" }
getData(): void
{
this.o = this.http.get(this.URI ).subscribe();
this.http.get<Post>(this.URI ).subscribe(response => {
console.log(response)//shows up
this.o = response;
console.log(this.o);//shows up
} );
console.log(this.o);//undefined
}
}
interface Post{
userId: number;
id : number;
title : string;
body : string;
}
Screenshot of the console