Передача входных данных в модуль Angular с отложенной загрузкой

#angular #routing #lazy-loading #angular-routing #ng-modules

#angular #маршруты #отложенная загрузка #angular-маршрутизация #ng-модули

Вопрос:

У меня есть компонент с именем NewsComponent , который используется совместно в моем приложении. Я хотел бы расширить его до NewsModule и добавить систему маршрутизации для отображения отдельных статей, чтобы мои маршруты выглядели как

 /some-component
/some-component/news
/some-component/news/article/12345
/other-component
/other-component/news
/other-component/news/article/23456
  

Чтобы сделать его маршруты относительными, я лениво загружаю модуль:

 const routes: Route = [
  {
    path: 'some-component',
    component: SomeComponent
  },
  {
    path: 'some-component/news',
    component: SomeNewsWrapperComponent,
    children: [
      {
        path: '',
        loadChildren: './news/module#NewsModule'
      }
    ]
  }
  // same for /other-component
]
  

Проблема в том, что NewsComponent отображает визуальные эффекты на основе некоторых входных данных, и я использовал для передачи их через @Input . Но теперь, когда компонент инкапсулирован в его загруженный с задержкой модуль, это больше невозможно.

Я мог бы создать NewsService в третьем модуле, импортированном как NewsModule , так и AppModule и передавать данные таким образом, но я чувствую, что это нарушение модульности, и хотел бы этого избежать. Есть ли лучшее решение для однонаправленного потока данных в модуль?

Ответ №1:

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

  1. Использование параметров запроса
  2. Наличие общего сервиса

Насколько я понимаю, модульность — это все, что касается вашего дизайна. Если у вас много данных, которые нужно передать в ваш модуль отложенной загрузки, то, безусловно, вы должны были сломать свой модуль в неправильном месте. При отложенной загрузке вы должны были передать минимальное количество информации таким образом, чтобы эта информация могла быть передана через некоторые параметры запроса.

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