Angular 17: отложенная загрузка общего компонента

(Большинство ответов, которые я нашел, очень устарели и не касаются отдельных компонентов).

В моем приложении Angular есть несколько автономных общих компонентов. К сожалению, я не могу найти способ сделать их отложенную загрузку, если они не являются маршрутом, который использует loadComponent() и import() в файле определений маршрутов.

Итак, у меня есть это в моем приложении:

src
- main
  - app
    - modules
      - shared
        - components
          - shared-component1.component.ts
          - shared-component2.component.ts

Есть ли в современных версиях Angular относительно простой способ отложенной загрузки общего автономного компонента Angular?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
0
77
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете добиться этого с помощью отложенных просмотров. Чтобы отложенно загрузить компонент, просто поместите его внутри блока @defer в шаблоне, как показано ниже:

@defer {
  <shared-component1 />
}

Убедитесь, что компонент загружается только через @defer во всем проекте, а не загружается где-то еще. (Спасибо @Matthieu Riegler за указание на это)

Также убедитесь, что этот компонент не загружается где-либо еще!

Matthieu Riegler 08.07.2024 16:46

Другой подход, который может сработать, — сделать компонент автономным или создать новый модуль, который его объявляет и экспортирует.

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

Вы можете проверить это с помощью webpack-bundle-analyzer, чтобы убедиться, что ваш новый модуль компонента не включен в ваш основной пакет.

Этот подход всегда хорошо работал для моих общих компонентов.

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