Мое приложение имеет компоненты, которые используют тяжелый внешний пакет (ag-сетка, около 1 МБ), который предоставляется в виде модуля углового2 (AgGridModule
). Я хотел бы загрузить пакет только тогда, когда требуются его компоненты, поэтому мой ContentModule
и все его подмодули ленивы загружены. Вся структура выглядит следующим образом:Поделитесь внешним модулем между ленивыми загруженными модулями в угловом2
Однако, когда я импортировать AgGridModule
в обоих Submodule1
и Submodule3
, он заканчивает тем, что входит в составленный JS дважды, делая как 1.chunk.js и 3.chunk. js большой. Я попытался импортировать его в ContentModule
, но тогда подмодули не распознают компоненты, которые включены в AgGridModule
, даже если я перечисляю их в свойстве exports
ContentModule
.
@NgModule({
imports: [
ContentRoutingModule,
SomeOtherModule,
AgGridModule.withComponents([])
],
exports: [
// this is the component from AgGridModule that I use
AgGridNg2
]
})
export class ContentModule { }
Есть ли способ разделить модуль между ленивыми нагруженными модулями, или раскрыть некоторые компоненты импортированного модуля ленивых нагруженных детям?
UPD: Создание общего модуля и импортировать его в подмодули не помогает, есть еще два фрагмента с около 1 МБ каждого:
UPD2: Я решил проблему временно путем слияния Submodule1 и Submodule3 в единый модуль.
Вы должны добавить весь массив 'AgGridModule' в массив экспорта. Вы можете экспортировать объявления только внутри вашего ContentModule или всех других модулей. – PierreDuc
@PierreDuc no, экспорт всего 'AgGridModule' не решает его, компонент все еще не распознается. –
Как вы в настоящее время создаете свою сборку? Угловой-кли? – AngularChef