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

У меня есть компонент под названием 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, и передавать данные таким образом, но я чувствую, что это нарушение модульности, и хотел бы этого избежать. Есть ли лучшее решение для однонаправленного потока данных в модуль?


person Anton Poznyakovskiy    schedule 18.03.2019    source источник


Ответы (1)


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

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

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

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

person Dulanjaya Tennekoon    schedule 19.03.2019