Где службы данных должны быть размещены в угловом приложении?
Я спрашивал себя о правильном месте для размещения сервисов, которые общаются с API, в моем приложении Angular. Изначально я думал, что лучшая позиция должна быть в модуле функции, но у меня есть сомнения по этому поводу.
Допустим, у меня есть лениво загруженный модуль FeatureA, который CRUDs таблицу в моей базе данных благодаря конечной точке API, поэтому я поставил FeatureAService в качестве поставщика для моего FeatureAModule.
Но скажем, у меня есть еще один ленивый загруженный модуль FeatureB, который должен прочитать информацию. У меня уже есть функция, которая помогает мне сделать это в моем FeatureAService, чтобы я мог использовать его повторно, но мне нужно предоставить эту услугу.
Я мог бы импортировать мой FeatureAModule в мой FeatureBModule, но я думаю, что он также принесет все компоненты FeatureA. И я мог бы поместить свой FeatureAService в третий модуль, общий для моих FeatureA и FeatureB, но возникает вопрос: должны ли все службы данных быть размещены в указанном модуле, чтобы они были доступны во всем приложении?
1 ответ
Обычно вы хотите импортировать службу поверх лениво загруженных модулей, поэтому существует единственный экземпляр ее, к которому может получить доступ любой модуль. Есть некоторые странные вещи, которые вы можете сделать с @SkipSelf
, но это обычно не считается лучшей практикой.
Официальные документы Angular советуют создавать сервисы в их собственном модуле функций, и иметь сервисы, которые должны быть доступны через приложение, для внедрения в корневой модуль или, если есть сервис, который совместно используется несколькими загруженными модулями, внедренными в родитель этих лениво загруженных модулей.
Таким образом, этот сервис должен быть собственным модулем и импортирован в ближайший родительский модуль, что имеет смысл.