Как использовать Angular Resolver для компонента без конфигурации маршрута?

#angular #api #angular-resolver

#angular #API #angular-resolver

Вопрос:

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

Теперь мой вопрос заключается в том, как использовать то же самое Resolver для предварительной выборки данных с сервера без маршрута? Чтобы подробнее объяснить мой вопрос, вот эскиз моего экрана :

введите описание изображения здесь

В HeadreComponent моего приложения мне нужно выполнить некоторый api-вызов для получения person.firstName и person.lastName , но в заголовке нет определенных маршрутов, потому что он должен отображаться на первой странице (http:localhost:4200home ). Итак, я не могу использовать обычный синтаксис в конфигурации маршрутов для вызова преобразователя следующим образом :

 {path: 'home', component: HomeComponent, resolve: {personInfos: PersonInfoResolver}}
  

Возможно, я что-то упускаю из виду, что я начинаю разработку Angular, поэтому будьте добры, пожалуйста: D

Комментарии:

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

2. @trichetriche не могли бы вы объяснить подробнее, пожалуйста? Вы имеете в виду создание HeaderParentComponent с {path: '', component: HeaderParentComponent, resolve: {personInfos: PersonInfoResolver}} ?

3. Да, удалите заголовок из вашего компонента приложения. Сделайте так, чтобы он отображался в вашей конфигурации маршрутизации. Затем вы получаете доступ к преобразователям.

4. В этом случае я думаю, что я должен сделать это для компонентов с поперечным отверстием, например NavigationComponent, FooterComponent и т.д… Я прав? Это будет: {path: '', component: ParentComponent, resolve: {list all my api resolvers here ...}} и html-часть моего родительского компонента будет выглядеть : <app-header> <router-outlet> <app-footer>

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

Ответ №1:

Решение, которое я использовал, это то, что @trichetriche предложил в комментарии: использовать родительский компонент, у которого есть route () для реализации преобразователей, а затем использовать @Input() для передачи данных дочернему компоненту.