Я новичок в Angular2 и изучаю, делая. Сейчас мне удалось создать одно из нескольких представлений с родительским компонентом, двумя дочерними компонентами и службой базы данных. Теперь я собираюсь перейти к реализации других представлений с их соответствующими родительско-дочерними компонентами.Angular2: Лучшая практика для уровня данных
Приложение должно использовать тот же набор данных, который может быть добавлен/обновлен/удален в других компонентах, поэтому я просматриваю отдельный слой данных, который может быть напрямую запрошен всеми компонентами приложения. Еще больше - мне нужен один и тот же экземпляр службы, так что промежуточные данные доступны повсюду и, кроме того, также избегают ненужных поездок в базу данных. Каков наилучший способ определить и использовать такой класс в Angular2?
Update Q: Так что теперь, когда у меня есть прямой доступ к переменным одного и того же экземпляра слоя данных по всему приложению, что это лучший способ справиться с переменными внутри компонентов?
а) Должен ли я работать с локальными переменными компонентов, которые являются копиями одних и тех же переменных слоев данных (при этом нагрузка, получать и устанавливать их в явном виде), как
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;
}
или, возможно, есть опция c?
Итак, чтобы уточнить: Я хотел бы импортировать db.service (который @Injectable) в app.module, включите его в массив провайдеров, а затем просто импортировать его снова любой другой компонент, который мне нужен, без включения его в массив поставщиков на уровне компонента, правильно? – pop
Точно. Затем просто добавьте его в конструктор() 'каждого компонента. –
Просто обратите внимание, что '@Injectable()' не имеет отношения. Он предназначен для инъекций зависимостей в декорированный класс, а не для инъекций. Если что-то не имеет аргументов конструктора, его не нужно украшать 'Injectable()' –