javascript - Angular 2 中的服务应该包含数据操作逻辑还是组件?

标签 javascript angular angular2-services

这可以标记为基于意见。但我正在寻找标准/最佳实践。我正在构建一个 Angular 2 应用程序,在将数据显示在模板中之前,我必须先操作 API 中的数据。例如,如果我的服务如下所示:

getData(id: number): Observable<Data> {
    return this.http
      .get(this.url + '/' + id)
      .map((res) => {
        return res.json().data;
       });
  }

  prepareData(data) {
    // manipulate and return the data
  }

在我的组件上,我可以这样调用服务:

getData(id: number): void {
    this.dataService.getData(id)
      .subscribe((data: Data) => {
        this.showData = this.dataService.prepareData(data)
      };
  }

但这是标准方法吗?还是应该将 prepareData 函数包含在组件中?

换句话说,与组件相比,服务应该是重的还是应该是轻的,只作为获取数据的接口(interface)?

最佳答案

简单、通用的转换每个人都需要(例如res => res.json().data)应该在服务中。

依赖于表示逻辑的特定于 View 的转换(例如 data => data.user.firstName + ' ' + data.user.lastName)应该放在您的组件中。

服务应该能够提供数据而无需知道将呈现什么。组件应该能够在不知道数据来自何处的情况下呈现数据

关于javascript - Angular 2 中的服务应该包含数据操作逻辑还是组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41188008/

相关文章:

javascript - Chrome console.log 矛盾

angular - 如何更改事件选项卡的墨水条颜色?

angular - 惰性加载模块可以共享其父级提供的相同服务实例吗?

angular - 在 Angular 4 中使用过滤器管道

javascript - 在我对 Kendo UI 网格数据进行更改后,jquery 返回错误

javascript - 数据表、点击(功能)和 on(提交)在第一页后不起作用

javascript - 合并多个替换文本

angular - 通过 <router-outlet> 进行组件通信

Angular | typescript |数据表不分页/排序

javascript - Angular 翻译器不工作