用webpack angular2加载延迟

时间:2016-09-26 09:29:14

标签: angular webpack

我正在使用angular2完整版,我正在尝试实现延迟加载。我的主要路由如下

export const ROUTES: Routes = [
    { path: 'login', component: LoginPage },
    { path: 'reset-password', component: Myaccount },
    {
        path: '',
        redirectTo: 'app',
        pathMatch: 'full'
    },
    ...ROUTES_APP,
    { path: "sub", loadChildren: "es6-promise?,[name]!./app/sub/sub.module#SubModule" },
];

我的子路由如下

import { Routes, RouterModule } from "@angular/router";
import { SubAppComponent } from "./sub-app.component";
import { SubHomeComponent } from "./sub-home.component";

export const subRoutes: Routes = [
  {
    path: "",
    component: SubAppComponent,
    children: [
      { path: "", component: SubHomeComponent }
    ]
  },
];

export const subRouting = RouterModule.forChild(subRoutes);

我的子模块如下

import { NgModule } from "@angular/core";
import { subRouting } from "./sub.routing";
import { SubAppComponent } from "./sub-app.component";
import { SubHomeComponent } from "./sub-home.component";

@NgModule({
  imports: [
    subRouting,
  ],
  declarations: [
    SubAppComponent,
    SubHomeComponent,
  ],
})
export class SubModule {
}

导航到sub时我收到错误 但我得到低于错误

core.umd.js:3462 EXCEPTION:未捕获(在承诺中):TypeError:System.import不是函数

请帮助我/让我知道如何使用webpack处理延迟加载

2 个答案:

答案 0 :(得分:2)

我已经通过使用require

解决了上述问题
{ path: "sub", loadChildren: () => require("es6-promise!./app/sub/sub.module")("SubModule") }

答案 1 :(得分:-1)

尝试 angular-router-loader

按照步骤进行..

npm install angular-router-loader --save-dev
延迟加载

中的路径

import { Routes } from '@angular/router';

export const routes: Routes = [
  { path: 'lazy', loadChildren: './lazy.module#LazyModule' }
];

同步加载

import { Routes } from '@angular/router';

export const routes: Routes = [
  { path: 'lazy', loadChildren: './lazy.module#LazyModule?sync=true' }
];
webpack.config.js

中的

test: /\.ts$/,
    loaders: [
      'awesome-typescript-loader',
      'angular-router-loader'
    ]
  }