Модуль маршрутизации перестает работать: не пойман (в обещании): ошибка: не удается найти «xxxModule»

У меня странная проблема с модулем маршрутизации. Модуль маршрутизации работал. Однако после того, как я добавил еще один модуль маршрутизации проекта в другую папку с другим именем модуля, я получил ошибку в этом проекте при попытке перейти к шагу 1.

Ошибка: Uncaught (в обещании): Ошибка: не удается найти «Step1Module» в «./+step1/step1.module».

шаг1.модуль:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { AbcComponent } from './abc.component';
import { StepGuardService } from './shared/step-guard/step-guard.service';

const routes: Routes = [
  {
    path: '', component: AbcComponent, children: [
      {
        path: '',
        redirectTo: 'step1',
        pathMatch: 'full'
      },
      {
        path: 'step1',
        loadChildren: './+step1/step1.module#Step1Module',
        data: {
          preload: true,
          stepNumberOnNavigator: 1
        },
        canActivate: [StepGuardService]
      },
      {
        path: 'step2',
        loadChildren: './+step2/step2.module#Step2Module',
        data: {
          preload: true,
          stepNumberOnNavigator: 2
        },
        canActivate: [StepGuardService]
      }
    ]
  }
];

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

Чтобы исправить это, я должен повторно ввести имя модуля «Step1Module» с точно такими же буквами (в основном скопировать и вставить) в строке

loadChildren: './+step1/step1.module#Step1Module',

и сохраните файл. Тогда ошибка исчезнет, ​​и проект будет запущен. Я не понимаю, что здесь происходит. Поскольку на самом деле ничего не изменилось, я не могу ничего отправить в git, чтобы исправить проблему и на стороне сервера.

Любая помощь будет оценена!

Спасибо!

Обновления: модуль маршрутизации для шага 1 и шага 2.

step1-routing.module.ts:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { Step1Component } from './step1.component';

const routes: Routes = [
  {
    path: '',
    component: Step1Component,
    data: {
      bannerTitle: 'xxx',
      pageTitle: 'xxx'
    }
  }
];

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

step2-routing.module.ts:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { Step2Component } from './step2.component';
import { Step2aComponent } from '../+step2/step2a/step2a.component';
import { QuestionnaireDetailComponent } from './questionnaire-detail/questionnaire-detail.component';
import { EligibilityDeclineComponent } from './eligibility-decline/eligibility-decline.component';

const routes: Routes = [
  {
    path: '',
    component: Step2aComponent,
    data: {
      bannerTitle: 'xxx',
      pageTitle: 'xxx'
    }
  },
  {
    path: 'eligibility',
    component: Step2Component,
    data: {
      bannerTitle: 'xxx',
      pageTitle: 'xxx'
    }
  },
...
  }
];

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

person Julie C.    schedule 13.06.2018    source источник
comment
Можем ли мы взглянуть на ваше определение маршрутов для модуля Step2Module? Вы уверены, что использовали для этого forChild, а не forRoot?   -  person wilovent    schedule 13.06.2018
comment
@WilliamKLEIN Я только что добавил определения двух маршрутов в свой пост. Да, я уверен, что использую для ребенка. Спасибо!   -  person Julie C.    schedule 13.06.2018
comment
@JulieC.ваша проблема была решена по сценарию вашего вопроса с помощью моего ответа. так что отметьте как ответ.   -  person Karnan Muthukumar    schedule 14.06.2018


Ответы (1)


Пожалуйста, примените полный путь к вашему модулю. Измените эту строку на следующую в файле step1.module:

 children: [
    {
      path: 'dashboard',
      loadChildren: 'app/components/dashboard/dashboard.module#DashboardModule'
    }
   ]

это только примерные данные, пожалуйста, замените свои данные. позвольте попробовать это один раз и, пожалуйста, дайте мне знать.

Примечание. Путь начинается приложение/путь/к/модулю/, как этот полный путь.

Если вы сомневаетесь, посетите этот веб-сайт и обратите внимание на строку loadChildren.

https://scotch.io/tutorials/lazy-loading-in-angular-v2

https://angular.io/guide/lazy-loading-ngmodules

Надеюсь, это решит вашу проблему.

Спасибо,

Карнан Мутху.

person Karnan Muthukumar    schedule 13.06.2018
comment
Спасибо, полный путь работает. К сожалению, после группового обсуждения мы решили не идти в этом направлении, поскольку мы предпочитаем, чтобы модуль маршрутизации имел относительный путь к модулям с ленивой загрузкой. Мы решили эту проблему, переименовав новый добавленный модуль маршрутизации проекта. Похоже на ошибку в Angular CLI, которая не может распознать правильный модуль, когда есть два модуля с одинаковым именем, даже если они находятся в совершенно разных папках. - person Julie C.; 14.06.2018
comment
Если ваш сценарий заданного вопроса работает, отметьте его как ответ и проголосуйте. - person Karnan Muthukumar; 14.06.2018