Как мне асинхронно загрузить компонент с AsyncRoute в Webpack?

Я потерял понимание, как заставить загрузку асинхронного модуля работать в последней версии angular-webpack-starter (RC4 с @angular/router 3.0.0-beta.2).

Есть включенный пример, но было бы полезно получить больше объяснения, что делать и как это работает вместе.

Что я сделал: - Я экспортировал свои ленивые маршруты компонентов:

export const referenzRoutes: RouterConfig = [
  { path: '', component: Test3 },
  { path: 'testApp', component: TestApp },
]

затем я импортировал и использовал дочерние маршруты в маршрутах моего родительского компонента:

import {referenzRoutes} from "./+Referenz/referenz.routes";
export const routes: RouterConfig = [
  {...},
  {path: 'referenz', component: 'Referenz', canActivate: [ WebpackAsyncRoute ], 
  children: referenzRoutes},
]

и я определил асинхронные маршруты, как это для каждого компонента:

export const asyncRoutes: AsyncRoutes = {
  'Referenz': require('es6-promise-loader!./+Referenz/referenz.component'),
  'TestApp': require('es6-promise-loader!./+Referenz/testApp/testApp.component'),
  'Test3': require('es6-promise-loader!./+Referenz/test3/test3.component'),
};

Я получаю сообщение об ошибке от browser_adapter.js:84 Не удается прочитать свойство 'путь' из неопределенного при переходе к TestApp. Как правильно это сделать?

Интересно также, должны ли имена компонентов для асинхронной загрузки быть уникальными для всего приложения?

1 ответ

Смотрите следующее сообщение в блоге AsyncRoute с Webpack

Реализуйте следующий код ниже

[
  new AsyncRoute({
      path: '/'
      , name: RouterService.CONTROL_CENTER_ROUTE
      , loader: () => new Promise((resolve: any) => {
          (<any>require).ensure(['control-center.component']
          , (require: any) =>
            resolve(require('control-center.component').ControlCenterComponent));
      })
      , useAsDefault: true
    })
  , new AsyncRoute({
    path: '/login'
    , name: RouterService.LOGIN_ROUTE
    , loader: () => new Promise((resolve: any) => {
        (<any>require).ensure(['login.component']
        , (require: any) =>
          resolve(require('login.component').LoginComponent));
    })
  })
];
Другие вопросы по тегам