Witam, jestem nowy jeśli chodzi o framework Angular. Już na starcie mam problem z pobieraniem danych z api.
Fragment kodu z serwisu:
public getTypes() : Observable<Type[]>
{
let url = "http://localhost:49193/api/book/GetTypes";
return this.http.get<Type[]>(url);
}
Fragment kodu z komponentu:
public types : Type[];
constructor(bookService : BookService)
{
this.bookService = bookService;
this.getTypes();
console.log("AppComponent types: " + this.types);
}
public getTypes()
{
this.bookService.getTypes().subscribe(
response => this.types = response
);
}
W konsoli dostaję wynik undefined.
Jednakże gdy zrobię coś takiego:
public getTypes()
{
this.bookService.getTypes().subscribe(
response =>
{
this.types = response
console.log(response);
}
);
}
w konsoli wypisują się pobrane dane z Api. Ponadto gdy dopisałem metodę, która tylko wpisywała do konsoli zawartość kolekcji types wywoływanej po naciśnięciu buttona dane wypisywały się również prawidłowo. Nie rozumiem dlaczego tak się dzieje. Może to być spowodowane tym, że dane ładują się do mojej lokalnej kolekcji, lecz trwa to jakiś czas i w momencie wypisywania ich w konstruktorze nie zdążyły się przypisać do lokalnej kolekcji ?
Z góry dziękuję za odpowiedź i pozdrawiam.