Посмотреть инъекционный контейнер для угловых

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

Пример сценария: допустим, есть модуль продаж и учета. Модуль продаж нуждается в компоненте с селектором: "общая стоимость". Модуль продаж и модуль учета используются основным модулем, но продажи не знают о бухгалтерском учете. Когда я называю тег "общая цена" в продажах, я хочу, чтобы основной модуль нашел его в учете и отобразил в продажах.

Здесь селектор тега 'total-price' работает как абстракция (интерфейс OO), реализация которого размещается в модуле учета, а основной модуль должен иметь IOC для поиска и поиска реализации, внедрения ее в продажи и возврата не найденное представление, если представление недоступно (вроде как шаблон нулевого объекта). Это также может помочь с обработкой авторизации и возвращением правильного представления всякий раз, когда пользователю не разрешено видеть какой-либо компонент.

Пример кода: Это пример кода для сценария, но он не компилируется, потому что, как говорится в моем вопросе, я ищу способ организации, составления пользовательского интерфейса и внедрения <total-price> компонент к продажам без ссылки на модуль учета напрямую.

1 ответ

В угловых проектах у нас есть модули и компоненты. давайте представим, что у нас есть 2 модуля X и Y, и каждый из них имеет 2 компонента:X1 и X2 и Y1 и Y2.

структура проекта показана ниже.

  1. AppModule
    • X (импорт)
    • Y (импорт)
  2. Икс
    • X1 (объявить)
    • X2 (объявить)
  3. Y
    • Y1 (объявить)
    • Y2 (объявить)

Теперь, как вы упомянули в вопросе, мы хотим использовать компонент X1 в компонент Y2. Как правило, в угловом приложении эта ситуация не является обычной. мы редко достигнем этих позиций, но что, если мы их получим? Angular упомянул, что каждый компонент должен использовать в своем собственном модуле, и если компонент необходимо использовать в нескольких компонентах, поэтому он не принадлежит ни одному модулю,он принадлежит всему приложению или нескольким модулям, и он является общим.



Решение Мы можем представить, что X1 хочет использоваться в компонентах Y2 и X2. Мы должны создать еще один модуль и назвать его "ShareModule" и объявить, экспортировать в него все общие компоненты, затем мы можем просто импортировать наш ShareModule в любой модуль, который мы хотим использовать в нем X1. поэтому структура нашего проекта должна быть такой, как показано ниже.

  1. AppModule
    • X (импорт)
    • Y (импорт)
  2. Икс
    • ShareModule (импорт)
    • X2 (объявить)
  3. Y
    • ShareModule (импорт)
    • Y1 (объявить)
    • Y2 (объявить)
  4. ShareModule
    • X1 (декларировать и экспортировать)

Посмотрите на демо.

Другие вопросы по тегам