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

查看:25
本文介绍了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
  • 操作系统: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',
      }
    ];
    

    不要忘记#"

    然后杀死 ng serve 并重新启动它

    Then kill ng serve and restart it

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

    It will works with angular-cli@webpack

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

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

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

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