我正在利用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属性来有意义地创建视图模型吗?
答案 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;
});
如果你的课程中有一个构造函数,那么这将是一块蛋糕!