Wpis z mikrobloga

Próbuję w angularze 2 pobrać obiekty z api. Podążam według oficjalnego tutoriala, plik hero.service.ts (revised) i nie rozumiem jednej rzeczy w tym kodzie.

getHeroes (): Observable {
return this.http.get(this.heroesUrl)
.map(this.extractData)
.catch(this.handleError);
}

Dlaczego po wykonaniu tej metody nie zostaje utworzony obiekt klasy hero, tylko zwykły obiekt json? Przecież metoda ma zwrócić tablicę obiektów danego typu. Tymczasem console.log który umieściłem w konstruktorze klasy Hero ani razu się nie wywołał, a z api pobieranych jest kilka obiektów, więc powinien się tych kilka razy wywołać. To znaczy, jak dobrze rozumiem, że ta metoda nie stworzyła obiektu klasy Hero, wywołując przy tym konstruktor, tylko tablicę jsonów. O co chodzi? W momencie utworzenia tego obiektu, a właściwie każdej zmiany tego obiektu, chciałbym wywołać pewną funkcję. Jak mogę inaczej to zrobić?

#angularjs #angular #webdev #naukaprogramowania
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Matt23: TypeScript tylko wymusza aby json miał odpowiednią strukturę i informuje o błędach na etapie kompilacji. Poza tym to zwykły JS.

Możesz zmapować jsony na obiekty typu Hero

jsonArray.map(heroJson => new Hero(heroJson))
  • Odpowiedz