Посмотреть инъекционный контейнер для угловых
Я пытаюсь иметь угловой модуль для каждого бэкэнда микросервиса. Таким образом, чтобы каждый модуль оставался независимым и чистым, пока они используют компоненты друг друга, когда они доступны, и компонент по умолчанию "недоступен", когда компонент не найден в контейнере.
Пример сценария: допустим, есть модуль продаж и учета. Модуль продаж нуждается в компоненте с селектором: "общая стоимость". Модуль продаж и модуль учета используются основным модулем, но продажи не знают о бухгалтерском учете. Когда я называю тег "общая цена" в продажах, я хочу, чтобы основной модуль нашел его в учете и отобразил в продажах.
Здесь селектор тега 'total-price' работает как абстракция (интерфейс OO), реализация которого размещается в модуле учета, а основной модуль должен иметь IOC для поиска и поиска реализации, внедрения ее в продажи и возврата не найденное представление, если представление недоступно (вроде как шаблон нулевого объекта). Это также может помочь с обработкой авторизации и возвращением правильного представления всякий раз, когда пользователю не разрешено видеть какой-либо компонент.
Пример кода: Это пример кода для сценария, но он не компилируется, потому что, как говорится в моем вопросе, я ищу способ организации, составления пользовательского интерфейса и внедрения <total-price>
компонент к продажам без ссылки на модуль учета напрямую.
1 ответ
В угловых проектах у нас есть модули и компоненты. давайте представим, что у нас есть 2 модуля X и Y, и каждый из них имеет 2 компонента:X1 и X2 и Y1 и Y2.
структура проекта показана ниже.
- AppModule
- X (импорт)
- Y (импорт)
- Икс
- X1 (объявить)
- X2 (объявить)
- Y
- Y1 (объявить)
- Y2 (объявить)
Теперь, как вы упомянули в вопросе, мы хотим использовать компонент X1 в компонент Y2. Как правило, в угловом приложении эта ситуация не является обычной. мы редко достигнем этих позиций, но что, если мы их получим? Angular упомянул, что каждый компонент должен использовать в своем собственном модуле, и если компонент необходимо использовать в нескольких компонентах, поэтому он не принадлежит ни одному модулю,он принадлежит всему приложению или нескольким модулям, и он является общим.
Решение Мы можем представить, что X1 хочет использоваться в компонентах Y2 и X2. Мы должны создать еще один модуль и назвать его "ShareModule" и объявить, экспортировать в него все общие компоненты, затем мы можем просто импортировать наш ShareModule в любой модуль, который мы хотим использовать в нем X1. поэтому структура нашего проекта должна быть такой, как показано ниже.
- AppModule
- X (импорт)
- Y (импорт)
- Икс
- ShareModule (импорт)
- X2 (объявить)
- Y
- ShareModule (импорт)
- Y1 (объявить)
- Y2 (объявить)
- ShareModule
- X1 (декларировать и экспортировать)