Angular2: лучшая практика для уровня данных

Я новичок в Angular2 и учусь на практике. Прямо сейчас мне удалось создать одно из нескольких представлений с родительским компонентом, парой дочерних компонентов и службой базы данных. Теперь я собираюсь перейти к реализации других представлений с соответствующими родительскими и дочерними компонентами.

Приложение должно использовать тот же набор данных, который может быть добавлен / обновлен / удален в других компонентах, поэтому я стремлюсь иметь отдельный слой данных, к которому могут напрямую обращаться все компоненты приложения. Еще больше - мне нужен один и тот же экземпляр службы, чтобы промежуточные данные были доступны везде, и, кроме того, чтобы избежать ненужных поездок в базу данных. Каков наилучший способ определить и использовать такой класс в Angular2?

Обновление В: Итак, теперь, когда у меня есть прямой доступ к переменным одного и того же экземпляра слоя данных во всем приложении, каков наилучший способ работы с переменными внутри компонентов?

а) Должен ли я работать с локальными переменными компонента, которые являются копиями одних и тех же переменных уровня данных (таким образом, загружая, получая и устанавливая их явно), например

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

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

getSelectedLocation() {
   return this.selectedLocation;
}

или б) я должен работать исключительно с переменными уровня данных, перебирать их, получать и устанавливать их внутри компонента?

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

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

или может есть вариант с?

1 ответ

Решение

Я предполагаю, что вам нужен сервис, доступный для всех компонентов, целью которых является взаимодействие с данными.

Вы также хотите услугу, которая является одиночной.

Решение состоит в том, чтобы создать сервис и предоставить его на уровне приложения.

Узнать больше:

Как я могу создать единый сервис в Angular 2?

Другие вопросы по тегам