2017-06-08 3 views
1

Version:Wie kann ich das Lazyload-Modul in Routen zum normalen Modul ändern?

ng version: 
@angular/cli: 1.0.0-rc.1 
node: 6.10.2 
os: win32 x64 
@angular/common: 4.1.1 
@angular/compiler: 4.1.1 
@angular/compiler-cli: 4.1.1 
@angular/core: 4.1.1 
@angular/forms: 4.1.1 
@angular/http: 4.1.1 
@angular/platform-browser: 4.1.1 
@angular/platform-browser-dynamic: 4.1.1 
@angular/router: 4.1.1 
@angular/cli: 1.0.0-rc.1 

Mein Projekt verwendet lazyload Module in Strecken, wie zum Beispiel zu verwenden:

import { NgModule } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 

export const routes: Routes = [ 
    { path: 'global-config', loadChildren: 'app/modules/act-widget/main.module#GlobalConfigModule' } 
]; 

Aber wir haben zu viele lazyload Module. Es macht unseren Bauprozess langsam (92% Chunk-Asset-Optimierung). Also treffen wir die Entscheidung, Lazyload-Module zu verwerfen.

Aber wenn ich das ändern:

import { NgModule } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 
import {GlobalConfigModule} from '../modules/global-config/global-config.module'; 

export const routes: Routes = [ 
    { path: 'global-config', loadChildren:() => GlobalConfigModule } 
]; 

Fehler erscheint:

ERROR in Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 12:42 in the original .ts file), resolving symbol routes in E:/pgg_oa/src/app/container/container-routing.module.ts, resolving symbol AppRoutingModule in E:/pgg_oa/src/app/container/container-routing.module.ts, resolving symbol AppRoutingModule in E:/pgg_oa/src/app/container/container-routing.module.ts, resolving symbol AppRoutingModule in E:/pgg_oa/src/app/container/container-routing.module.ts 

Meine Frage ist:

Wie kann ich unsere lazyload Module in normale Module mit den geringsten Kosten ändern ?

+0

Aktualisieren Sie Ihren CLI auf die neueste Version und es wird nicht mehr so ​​langsam sein. –

Antwort

1

Sie sollten eine exportierte Funktion erstellen und diese als loadChildren-Wert verwenden. Das Problem ist, dass Sie eine Funktion für jedes Modul zu schaffen haben:

export function getGlobalConfigModule(): typeof GlobalConfigModule { 
    return GlobalConfigModule; 
} 

export const routes: Routes = [ 
    { path: 'global-config', loadChildren: getGlobalConfigModule} 
]; 

Die anfängliche Startzeit der Anwendung wird allerdings viel langsamer sein, ich bin nicht sicher, dass Sie diese Entscheidung treffen möchten. Ein Build-Prozess dauert sehr lange, da die AoT-Kompilierung durchgeführt wurde. Investieren Sie vielleicht in neue Festplatten mit hohen I/O-Werten, um die Build-Zeit zu verbessern.

Verwandte Themen