5

我是 Angular2 的新手,正在边做边学。现在我已经成功地用一个父组件、几个子组件和数据库服务构建了多个视图之一。现在我将转向使用它们各自的父子组件来实现其他视图。

应用程序应该使用可以在其他组件中添加/更新/删除的相同数据集,因此我正在考虑拥有一个单独的数据层,它可以由应用程序的所有组件直接查询。更重要的是——我需要相同的服务实例,这样中间数据在任何地方都可用,而且还可以避免不必要的数据库访问。在 Angular2 中定义和使用这样的类的最佳方法是什么?

更新问: 那么现在,当我可以直接访问整个应用程序中数据层的同一实例的变量时,在组件中处理变量的最佳方法是什么?

a)我是否应该使用本地组件变量,它们是相同数据层变量的副本(因此显式加载、获取和设置它们),例如

this.locations = this.datalayer.locations;
this.selectedLocation;

updateLocation(id) {
  this.selectedLocation = id;
  this.datalayer.setSelectedLocation(id);
}

getSelectedLocation() {
   return this.selectedLocation;
}

或者b)我应该只使用数据层变量,对它们进行迭代,从组件中获取和设置它们吗?

updateLocation(id) {
   this.datalayer.selectedLocation = id;
}

getSelectedLocation() {
   return this.datalayer.selectedLocation;
}

或者也许有一个选项c?

4

1 回答 1

7

我假设您需要一项服务,该服务可供所有组件使用,目的是与数据交互。

您还需要一个单例服务。

解决方案是创建服务并在应用程序级别提供它。

看更多:

如何在 Angular 2 中创建单例服务?

于 2016-12-15T09:52:55.867 回答