Наилучшая практика предоставления многоразовых одноэлементных сервисов в нескольких модулях Ng (и особенно в монореполе, в стиле Nrwl Nx) - PullRequest
0 голосов
/ 08 января 2020

У нас есть моно репо и мы используем макет Nx с / libs.

Многие из .... service.ts (services) могут быть повторно использованы в нескольких местах. Вот вопрос ...

Эти сервисы в основном извлекаются из REST API и поэтому предназначены для того, чтобы оставаться одинокими. Где они должны быть предоставлены?

Мои мысли сейчас заключаются в том, чтобы обернуть каждую услугу в NgModule и предоставить ее там. Тогда любой другой модуль, который захочет использовать эту службу, должен будет импортировать NgModule.

Таким образом, если несколько модулей импортируют его, NgModule с сервисом будет оцениваться только один раз, а сервис, который он предоставляет, не будет повторно создан.

С другой стороны, это привело бы к резкому увеличению количества файлов в моем дереве исходных текстов. Это все стоит или есть лучший / более элегантный способ сделать это?

1 Ответ

1 голос
/ 09 января 2020

В нашем monorepo я создаю angular lib

ng g lib --tags="type:data-access" user/data-access

, затем удаляем созданный модуль по умолчанию, потому что он не нужен.

, затем создаем сервис

ng g s --project=user-data-access User

это добавит

@Injectable({ providedIn: 'root' })

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

, затем убедитесь, что сервис экспортируется в index.ts файл

...