Перемещение сервисно-зависимого компонента в общий модуль - PullRequest
0 голосов
/ 14 июля 2020

Допустим, у меня есть компонент с именем CarDetailsComponent, который использует CarApiService, оба из которых находятся в CarModule. Теперь я хочу переместить этот компонент в SharedModule. Поскольку несколько модулей также требуют одного и того же компонента. Я не могу поделиться всем CarModule, так как он уже импортирует в него другие модули (например :, CustomerModule, ShopModule).

Перемещение CarDetailsComponent в SharedModule не является проблемой, но как мне теперь обрабатывать зависимую службу (CarApiService), поскольку она также используется компонентом, а также другими компонентами в CarModule.

Я пытался использовать поставщиков (useClass и множество ), чтобы заменить службу другой службой модуля, в котором она используется. Однако все, что я в итоге делаю, это копирую те же функции в службы других модулей.

Я действительно думал о перемещении CarApiService тоже в SharedModule, но он действительно принадлежит CarModule (так как большинство компонентов здесь используют его, и только CarDetailsComponent использует службу).

Что такое здесь лучше подход?

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Должен ли ваш CarApiService быть в модуле (каждый модуль имеет свой собственный синглтон этой службы) или все приложение использует один и тот же экземпляр?

Если последний, вы можете удалить CarpApiService из всех ваших модулей и измените свой @Injctor декоратор на этот:

@Injectable({
  providedIn: 'root',
})

Затем вы можете импортировать его в любой конструктор, не добавляя его в этот модуль компонентов.

См. Документы Angular для получения дополнительной информации: https://angular.io/guide/singleton-services

1 голос
/ 14 июля 2020

Как насчет создания CarDetailModule, в котором вы объявляете, экспортируете CarDetailsComponent и импортируете его туда, где он вам нужен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...