具有自定义ViewModel的角度HttpClient

时间:2018-04-09 14:40:17

标签: angular angular-httpclient

我正在利用HttpClient代替Http进行服务调用以及Observable运行良好。但是,我想映射一些自定义属性。这是我们可以获取和映射的东西吗?

给你背景:我有 一项服务:这称为web api并将结果打包为Observable>像>

getArticles(): Observable<Array<ArticleViewModel>> {
   return this.httpClient.get<Array<ArticleViewModel>>(this.url.articleurl);
}

接下来我有一个组件,它调用此服务器如:

getArticles(): void {
  this.articles = this.articleService.getArticles();
}

最后,我有ViewModel,它具有Article ViewModel的所有属性。

然而,Web Api返回的属性比我在Angular View Model中的属性要多得多。此外,一些属性的名称与我在Angular VM中的名称不同。 所以,我想映射具有正确属性的那些,并且我想在设置Angular Property值之前使用一些web api属性来验证。

但同时,我不想使用http(@angular/http)。我想继续使用最新的httpclient(@angular/common/http)。 但是该服务直接将结果映射到我的角度视图模型。

那么我们可以通过检查所有web api属性来有意义地创建视图模型吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

当然,这真的很容易!

return this
  .httpClient
  .get<ArticleViewModel[]>(this.url.articleurl)
  .map(articles => {
    const mapped: ArticleViewModel[] = [];
    for (let article of articles) {
      const _a = new ArticleViewModel(/* fields */);
      mapped.push(_a);
    }
    return mapped;
  });

如果你的课程中有一个构造函数,那么这将是一块蛋糕!