Zastanawiam się, jaki jest najlepszy sposób odwzorowania odpowiedzi http z żądania pobrania na klasę zamiast podstawowego obiektu JavaScript.Odpowiedź Angular 2 map http na instancję klasy
W mojej obecnej próbie łatwo mogę uzyskać new ClassName(data)
, ale może być też podany niejasny kątowy i całkowicie niesamowity sposób na zrobienie tego, czego nie wiem.
Oto mój bieżący kod:
getPost(id:number){
return this._http.get(this._postsUrl+'/'+id)
.map(res => new Post(res.json().data))
.do(data => console.log(data))
.catch(this.handleError);
}
muszę Post być klasą, a nie tylko interfejs, bo mam metod wewnątrz.
I po HeroTutorial i http „podręcznik programisty” wzdłuż i w ich getHeroes
metody robią:
getHeroes() {
return this.http.get(this._heroesUrl)
.map(res => <Hero[]> res.json().data)
.catch(this.handleError);
}
jakoś Oczekuje się <Hero[]>
udział nie tylko to: Weź klasę bohatera i utworzyć nowe instancje z tego, ale moje testy pokazują, że tak nie jest, to jest po prostu dla Maszynistki wiedzieć, czego się spodziewać.
Wszelkie pomysły? Dzięki!
Nie jest to związane z Angularem ani Http, ale tylko z TypeScript => jak deserializować JSON do konkretnej instancji klasy. –
'new ClassName (data)' jest całkowicie poprawny, możesz łączyć operatorów i mapować, filtrować, zmniejszać ... Obserwacje nie obchodzą tego, co zawijają (; – Sasxa
@ GünterZöchbauer Wygląda na to, że masz rację, szybkie wyszukiwanie tych słowa przyniosły wiele wyników, żaden z nich nie jest tak naprawdę to, co chciałem usłyszeć, ale poradzę sobie z czymś, wiedząc, że nie ma na to dobrego sposobu: – Growiel