Moja aplikacja zawiera komponenty korzystające z dużego zewnętrznego pakietu (ag-grid, około 1 MB), który jest dostarczany jako moduł kątowy2 (AgGridModule
). Chciałbym załadować pakiet tylko wtedy, gdy wymagane są składniki, które go używają, więc mój ContentModule
i wszystkie jego submoduły są leniwie ładowane. Cała konstrukcja wygląda następująco:Udostępnianie modułu zewnętrznego między leniwymi modułami ładowanymi w trybie kątowym2
Jednak, kiedy importować AgGridModule
się zarówno Submodule1
i Submodule3
, kończy się są zawarte w sporządzonej JS dwukrotnie, dzięki czemu zarówno 1.chunk.js i 3.chunk. js duże. Próbowałem zaimportować go do ContentModule
, ale wtedy submoduły nie rozpoznają komponentów zawartych w AgGridModule
, nawet jeśli wymienię je w właściwości exports
z ContentModule
.
@NgModule({
imports: [
ContentRoutingModule,
SomeOtherModule,
AgGridModule.withComponents([])
],
exports: [
// this is the component from AgGridModule that I use
AgGridNg2
]
})
export class ContentModule { }
Czy istnieje sposób, aby udostępnić moduł pomiędzy leniwych modułów załadowanych lub narazić niektóre elementy importowanego modułu do leniwych załadowane dzieci?
UPD: Tworzenie wspólny moduł i importowanie go do submodules nie pomaga, wciąż istnieją dwa kawałki z około 1MB każda:
UPD2: I rozwiązać problem tymczasowo przez scalanie Submodule1 i Submodule3 w jeden moduł.
Powinieneś dodać cały "AgGridModule" do tablicy eksportu. Możesz eksportować tylko deklaracje wewnątrz 'ContentModule' lub całych innych modułów – PierreDuc
@PierreDuc no, eksportowanie całego' AgGridModule' nie rozwiązuje go, komponent wciąż nie jest rozpoznawany. –
Jak obecnie generujesz swoją kompilację? kątowy-cli? – AngularChef