2017-05-09 94 views
0

我想實現延遲加載。我非常肯定,我把正確的道路VideoModule,但我仍然在編譯時出錯。Angular 2懶加載編譯錯誤

這裏是我的AppModule,我定義我的路線和模塊,我想要加載懶惰。

import {BrowserModule} from '@angular/platform-browser'; 
import {NgModule} from '@angular/core'; 
import {HttpModule} from '@angular/http'; 

import {AppComponent} from './app.component'; 
import {MenuComponent} from './menu/menu.component'; 
import {RouterModule} from '@angular/router'; 
import {HomeComponent} from './home/home.component'; 
import {VideoModule} from './video/video.module'; 

@NgModule({ 
    declarations: [ 
     AppComponent, 
     MenuComponent, 
     HomeComponent, 
    ], 
    imports: [ 
     BrowserModule, 
     HttpModule, 
     VideoModule, 
     RouterModule.forRoot([ 
      {path: '', component: HomeComponent}, 
      {path: 'video', loadChildren: 'app/video/video.module#VideoModule'} 
     ]) 
    ], 
    providers: [ 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

和VideoModule

import {NgModule} from '@angular/core'; 
import {CommonModule} from '@angular/common'; 
import {VideosComponent} from './videos/videos.component'; 
import {VideoPlayComponent} from './video-play/video-play.component'; 
import {NamePipe} from './name.pipe'; 
import {VideoFilterPipe} from './video-filter.pipe'; 
import {FormsModule} from '@angular/forms'; 
import {RouterModule} from '@angular/router'; 
import {VideoPlayGuard} from './video-play.guard'; 
import {VideoService} from './video.service'; 

@NgModule({ 
    imports: [ 
     CommonModule, 
     FormsModule, 
     RouterModule.forChild([ 
      {path: 'videos', component: VideosComponent} 
     ]) 
    ], 
    declarations: [ 
     VideosComponent, 
     VideoPlayComponent, 
     NamePipe, 
     VideoFilterPipe 
    ], 
    providers: [ 
     VideoPlayGuard, 
     VideoService 
    ], 
    exports: [ 
    ] 
}) 
export class VideoModule { 
} 

錯誤,我得到:

40% building modules 1/2 modules 1 active ...Dev\pfilter-web\src\app\app.module.tsError: No module factory available for dependency type: ContextElementDependency 
    at Compilation.addModuleDependencies (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:206:21) 
    at Compilation.processModuleDependencies (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:195:8) 
    at _this.buildModule.err (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:335:13) 
    at building.forEach.cb (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:140:27) 
    at Array.forEach (native) 
    at callback (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:140:13) 
    at module.build (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:167:11) 
    at ContextModule.<anonymous> (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\ContextModule.js:118:3) 
    at ContextModule.result.resolveDependencies (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@ngtools\webpack\src\plugin.js:229:25) 
    at ContextModule.build (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\ContextModule.js:99:7) 
    at Compilation.buildModule (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:142:10) 
    at factoryCallback (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:324:11) 
    at C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@angular\cli\node_modules\webpack\lib\ContextModuleFactory.js:96:12 
    at C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\tapable\lib\Tapable.js:204:11 
    at done.then (C:\Users\Stefan Antic\Dev\pfilter-web\node_modules\@ngtools\webpack\src\plugin.js:231:28) 
    at process._tickCallback (internal/process/next_tick.js:109:7) 
70% building modules 2/2 modules 0 active(node:9200) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: callback(): The callback was already called. 
webpack: wait until bundle finished:/
webpack: wait until bundle finished:/
+0

嘗試'{路徑:「視頻',loadChildren:'./app/video/video.module#VideoModule'}' –

+0

ERROR in Could not resolve「./app/video/video.module」from「C:/ Users/Stefan Antic/Dev/pfilter-網絡/ src目錄/應用/ app.module.ts」。 @MurhafSousli 我嘗試了很多路徑組合,它仍然不起作用 – Antic97

+0

我不能告訴你的文件夾結構是怎樣的,試試'{path:'video',loadChildren:'./video/video.module#VideoModule '}' –

回答

1

如果VideoModule是懶加載,應該可以在上文AppModule進口:

imports: [ 
    BrowserModule, 
    HttpModule, 
    **VideoModule**, 
    RouterModule.forRoot([ 
     {path: '', component: HomeComponent}, 
     {path: 'video', loadChildren: 'app/video/video.module#VideoModule'} 
    ]) 
], 

從上面刪除它。

它也不應該被導入。刪除這一行:

import {VideoModule} from './video/video.module'; 

而且取出空提供商數組:

providers: [ 
], 

我也發現了這個問題,報道和幾種方法來這裏解決它:https://github.com/angular/angular-cli/issues/4246

+0

行動中,我沒有注意到+1 –

+0

它仍然不起作用。我得到同樣的錯誤按摩。 – Antic97

+0

我剛剛編輯了我的消息,並提供了一個指向討論此問題的Angular-cli問題的鏈接。 – DeborahK