Пакет Angular 2 не может разрешить модуль при отложенной загрузке - PullRequest
0 голосов
/ 30 января 2019

Я подготовил угловой модуль 2 (скажем, модуль Core), который опубликован на npm.Этот основной модуль работает как основной модуль в проекте Angular (импортируется в main.ts как модуль начальной загрузки).

Проблема в том, что если я собираю модуль include из папок проекта и запускаю ng serve с параметром --aot, все работает хорошо.Но если я импортирую его из dist или node_modules в качестве пакета сборки, лениво загруженные компоненты перестают работать, если я запускаю его с параметром --aot.

Аналогичные файлы:

В AppRouterModule устанавливает маршрут для DefaultModule

import {NgModule} from '@angular/core';
import {Routes, RouterModule} from '@angular/router';
import {AuthGuard} from './services/auth-guard.service';

const appRoutes: Routes = [
  {path: '', redirectTo: 'default', pathMatch: 'full'},
  {path: 'default', loadChildren: './default/default.module#DefaultModule'}
];

@NgModule({
  imports: [
    RouterModule.forRoot(appRoutes)
  ],
  exports: [
    RouterModule
  ],
  providers: [
    AuthGuard
  ]
})
export class AppRoutingModule {

}

В Core модуль импортируется DefaultModule

@NgModule({
  imports: [
    DefaultModule,
  ],
  declarations: [
    ...
  ],
  providers: [
    ...
  ],
  bootstrap: [
    ...
  ]
})

В DefaultModule устанавливается компонент и дочерние маршруты через DefaultRoutingModule

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DefaultComponent } from './default.component';
import { DefaultRoutingModule } from './default-routing.module';
import { SharedModule } from '../shared/shared.module';
import { ReactiveFormsModule } from '@angular/forms';
import {NgxPermissionsModule} from 'ngx-permissions';

@NgModule({
  imports: [
    CommonModule,
    DefaultRoutingModule,
    SharedModule,
    ReactiveFormsModule,
    NgxPermissionsModule.forChild(),
  ],
  declarations: [
    DefaultComponent,
  ],
  entryComponents: [
  ],
})
export class DefaultModule { }

DefaultRoutingModule

import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router';
import {NgxPermissionsGuard} from 'ngx-permissions';
import {DefaultComponent} from './default.component';
import {AuthGuard} from '../services/auth-guard.service';

const defaultRoutes: Routes = [
  {
    path: '', component: DefaultComponent, children: [
      {
        path: '', component: DefaultComponent, canActivate: [NgxPermissionsGuard, AuthGuard],
        data: {
          permissions: {
            only: ['default'],
            redirectTo: ''
          }
        }
      },
    ]
  },
];

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

}

После импортаЯдро от node_modules, когда ng serve --aot, отображается ошибка:

ERROR in Could not resolve module ./default/default.module relative to ../node_modules/...core.module.ts

Может кто-нибудь объяснить мне, где ошибка?Когда Core не был перемещен в node_modules как модуль, все работает правильно.

...