Angular2 RC7和angular-cli Webpack中的延迟加载 [英] Lazy loading in Angular2 RC7 and angular-cli webpack

查看:70
本文介绍了Angular2 RC7和angular-cli Webpack中的延迟加载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用ng new创建了一个新的应用程序,但是当我尝试配置模块以使用延迟加载进行加载时,我不断收到错误消息,找不到该模块.

I have created a new app using ng new but when I try to configure a module to load using lazy loading I keep getting an error that the module cannot be found.

EXCEPTION: Uncaught (in promise): Error: Cannot find module 'app/home/home.module'

package.json

"dependencies": {
    "@angular/common": "2.0.0-rc.7",
    "@angular/compiler": "2.0.0-rc.7",
    "@angular/core": "2.0.0-rc.7",
    "@angular/forms": "2.0.0-rc.7",
    "@angular/http": "2.0.0-rc.7",
    "@angular/platform-browser": "2.0.0-rc.7",
    "@angular/platform-browser-dynamic": "2.0.0-rc.7",
    "@angular/router": "3.0.0-rc.3",
    "core-js": "^2.4.1",
    "rxjs": "5.0.0-beta.12",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.6.21"
  },
  "devDependencies": {
    "@types/jasmine": "^2.2.30",
    "angular-cli": "1.0.0-beta.11-webpack.9-4",
    "codelyzer": "~0.0.26",
    "jasmine-core": "2.4.1",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "protractor": "4.0.5",
    "ts-node": "1.2.1",
    "tslint": "3.13.0",
    "typescript": "2.0.2"
  }

  • angular2 RC7
  • angular-cli:1.0.0-beta.11-webpack.9-4
  • 节点:6.5.0
  • os:win32 x64
    • angular2 RC7
    • angular-cli: 1.0.0-beta.11-webpack.9-4
    • node: 6.5.0
    • os: win32 x64
    • import { ModuleWithProviders } from '@angular/core';
      import { Routes, RouterModule } from '@angular/router';
      
      const appRoutes: Routes = [{
          path: '',
          redirectTo: 'home',
          pathMatch: 'full'
      },
      {
          path: `home`,
          loadChildren: `app/home/home.module`
      }];
      export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);
      

      app.module.ts

      import { BrowserModule } from '@angular/platform-browser';
      import { NgModule } from '@angular/core';
      import { FormsModule } from '@angular/forms';
      import { HttpModule } from '@angular/http';
      
      import { AppComponent } from './app.component';
      
      import { routing } from './app.routing';
      
      @NgModule({
        declarations: [
           AppComponent
        ],
        imports: [
          BrowserModule,
          FormsModule,
          HttpModule,
          routing
        ],
        providers: [],
        bootstrap: [AppComponent]
      })
      export class AppModule { }
      

      app.component.ts

      import { Component } from '@angular/core';
      
      @Component({
        selector: 'app-root',
        templateUrl: 'app.component.html',
        styleUrls: ['app.component.css']
      })
      export class AppComponent {
        title = 'app works!';
      }
      

      app.component.html

      <router-outlet></router-outlet>
      

      我确定我缺少一些愚蠢的东西,但是我尝试了各种选择,但到目前为止没有任何效果.有了我的配置,我会丢失任何东西吗?

      I'm sure I'm missing something stupid but I tried various options and nothing has worked so far. Given my configuration, am I missing anything?

      预先感谢, 斯蒂芬

      推荐答案

      使用RC7,您可以执行以下操作:

      With RC7, you can do as follow:

      const appRoutes: Routes = [
        {
          path: 'home',
          loadChildren: 'app/home/home.module#HomeModule',
        }
      ];
      

      别忘了"#"

      然后终止服务并重新启动

      Then kill ng serve and restart it

      它将与angular-cli @ webpack一起使用

      It will works with angular-cli@webpack

      P.S:角度惯例是在延迟加载的文件夹前面加上(+),例如+ home/

      P.S: The angular convention is to prefix lazy loaded folders with a (+) e.g. +home/

      这篇关于Angular2 RC7和angular-cli Webpack中的延迟加载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆