2016-11-01 2 views
1

У меня есть компонент Angular 2, который содержит несколько подкомпонентов. Для некоторых из них довольно дорого загружать их, и иногда их вообще не нужно загружать. Например, если пользователь не прокручивается так далеко.Как ленивая часть загрузки шаблона в Angular 2?

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

ответ

0

Вы можете выделить или сгруппировать субкомпоненты, которые будут отображаться, на более мелкие компоненты, которые будут загружаться вместе. Чтобы уменьшить время загрузки, 1. попробуйте использовать более мелкие шаблоны inline в файле компонентов. 2. Используйте директиву * ngIf в своем шаблоне, который может избежать визуализации шаблона и экземпляра компонента, как таковой. Обратите внимание, что если вы используете * ngIf, лучше использовать только DOM, не обновляясь, а вы можете создать DOM и использовать компонент, привязывая его с атрибутом [hidden] DOM

0

Нет никакого способа ленивых шаблонов загрузки. Что вы можете сделать - это ленивые модули загрузки. How to manually lazy load a module?

Если вы используете это с ViewContainerRef.createComponent() (см Angular 2 dynamic tabs with user-click chosen components для примера), чтобы динамически добавлять компоненты, которые вы только хотите, чтобы показать, если пользователи прокручивается достаточно далеко, он может работать (не пробовал себя еще).

+0

Хорошо. Благодаря! Может быть, другой вопрос, но как насчет загрузки компонента после загрузки всего остального? Вид принуждения компонента ждать до тех пор, пока все остальные не будут загружены. – tschaka1904

+0

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