Моя структура папок:

+-- app.module.ts
+-- app.routing.ts
+-- app.component.ts
+-- account/
|   +-- account.module.ts
|   +-- account.routing.ts
|   +-- account.component.ts

В моем app.routing.ts у меня есть,

  { path: 'account', loadChildren: './account/account.module#AccountModule' },

И, в account.routing.ts, у меня есть,

  { path: 'login', component: LoginFormComponent}

Но когда я захожу на страницу / аккаунт / логин, я получаю следующую ошибку:

NodeInvocationException: Uncaught (в обещании): Ошибка: не удается найти модуль './account/account.module'. Ошибка: не удается найти модуль «./account/account.module».

Я попытался изменить ./account/account.module#AccountModule на app / account / account.module # AccountModule, та же ошибка.

Есть предположения? Заранее спасибо.

4
Zair Henrique 20 Окт 2017 в 20:38

4 ответа

Лучший ответ

Убедитесь, что ваш модуль аккаунта должен иметь один маршрут, как показано ниже

Код для маршрутизации, который будет маршрутизироваться после загрузки модуля

const routes: Routes = [{
  path: ':something',
  component: AccountComponent,
}];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class AccountRoutingModule {
}

Вызов модуля маршрутизации в основном модуле

@NgModule({
  imports: [
    CommonModule,
    NgbModule.forRoot(),
    AccountRoutingModule,
    ...
0
Aniruddha Das 20 Окт 2017 в 18:54

Строковая версия loadChildren устарела в угловой версии 8

См. https://github.com/. угловой / угловой / блоба / ведущий / CHANGELOG.md # 800-2019-05-28 См. https://angular.io/api/router/LoadChildren.

Новый синтаксис

Новый синтаксис принимает динамическое выражение импорта . Это функция, которая возвращает импорт. Очень важно, чтобы вы импортировали туда свой модуль. В противном случае вы не лениво загружаете модуль, а просто загружаете его.

{ 
path: 'account', 
loadChildren: ()=> import('./account/account.module').next(mod => mod.AccountModule) 
}

Документы: https://angular.io/api/router/LoadChildrenCallback

Предупреждение. Назначение модуля после импорта не приведет к отложенной загрузке модуля!

Решение S.Pradeep по-прежнему будет загружать модуль! Вы можете проверить сами, внедрив оба подхода, одновременно проверив новый (загруженный с отложенной загрузкой) сетевой запрос, следуя по пути с отложенной загрузкой.

1
Rob Monhemius 27 Апр 2020 в 15:53

Вы можете попробовать изменить

  { path: 'account', loadChildren: './account/account.module#AccountModule' }

Кому

import {AccountModule} from './path';

{ path: 'account', loadChildren: ()=> AccountModule' }

примечание - не забудьте импортировать модуль, как указано выше

7
S.Pradeep 4 Июл 2018 в 11:39

У меня была такая же проблема, я попробовал пару вещей. Но изменение app.routing.ts делает свое дело.

Просто замените свою строку на:

{ path: 'account', loadChildren: () => AccountModule },

Я надеюсь, что это помогает

0
TAHI 16 Июн 2020 в 01:21