Угловой компонент использует несколько сервисов из разных модулей - PullRequest
0 голосов
/ 26 июня 2018

Мне трудно найти хорошее решение для следующей проблемы (если это проблема).

Например, у меня есть приложение с различными модулями, скажем, владельцы, локации и машины.

Сейчас я создаю компонент поиска, который может искать автомобиль. Логика поиска автомобиля находится в car.service автомобильного модуля.

Но когда машина найдена, мне также нужно установить местоположение, чтобы служба location.service из модуля местоположения также использовалась в поисковом компоненте для поиска местоположения на основе заданного идентификатора.

Так что теперь у меня есть поисковый компонент, которому нужны и location.service, и car.service.

Это похоже на плохую практику? Есть ли решения для такого рода проблем. Или это характерно для угловых компонентов и сервисов?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

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

Если у вас есть бизнес-логика, вы должны использовать сервис.В вашем случае вы справились хорошо, создав 3 сервиса для каждого «класса» вашей модели данных.

Теперь, что вы пропустили, так это то, что вам не нужны 2 зависимости в вашем компоненте: вам нужна только одна.

Вы создали поисковый компонент автомобиля → вам нужна зависимость от автосервиса.Это все.

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

Логика этого проста: представьте себе, что завтра вы также хотите уведомить продавца о том, что кто-то нашел их машину.Что вы будете делать ?Будете ли вы добавить третью зависимость для вашего компонента?

Нет.Что вы будете делать, это оставить компонент таким, какой он есть, и добавить зависимость к вашему сервису.

Теперь, на следующий день, вы решаете переключиться с Firebase на Parse, потому что это бесплатно.Что происходит в вашем случае?Вы должны изменить свои компонентные зависимости?

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

Этот способ работы позволяет создавать компоненты и службы, которые вы можете повторно использовать в том же приложении или в других приложениях.

0 голосов
/ 26 июня 2018

Я тоже новичок в Angular.Я думаю, что это нормально, когда вы импортируете сервис из другого модуля.Но в моем проекте я создаю имя папки _services, в котором хранятся все службы моего проекта.Затем я создаю имя файла index.ts:

export * from './authencation.service';
export * from './alert.service';
export * from './notebook.service';

И когда мне нужна служба импорта, я звоню import { StatisticSerivce, AlertService, UserService } from '../../../_services/index';

...