Angular 2映射http响应类的实例

Gro*_*iel 15 http angular

我想知道将get响应中的http响应映射到类而不是基本Javascript对象的最佳方法是什么.

在我目前的尝试中,我很简单new ClassName(data),但可能有一个模糊的Angular指定和完全令人敬畏的方式,我不知道.

这是我目前的代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

我需要Post成为一个类,而不仅仅是一个接口,因为我有内部方法.

我按照HeroTutorial和http"开发人员指南"进行操作,并按照他们的getHeroes方法执行:

getHeroes () {
return this.http.get(this._heroesUrl)
                .map(res => <Hero[]> res.json().data)
                .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)

我不知何故希望这<Hero[]>部分能做到这一点:拿Hero类并创建它的新实例,但我的测试表明它没有,这几乎只是Typescript知道会发生什么.

有任何想法吗 ?谢谢!

Thi*_*ier 17

我认为你可以使用mapJavaScript对象的方法:

getHeroes () {
  return this.http.get(this._heroesUrl)
            .map(res => {
               return res.json().data.map((elt) => {
                 // Use elt to create an instance of Hero
                 return new Hero(...);
               });
             })
            .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)