【发布时间】:2018-06-13 14:52:40
【问题描述】:
我对路由模块有一个奇怪的问题。用于工作的路由模块。但是,在我将另一个项目路由模块添加到具有不同模块名称的不同文件夹中后,在尝试导航到第 1 步时,我在该项目上遇到错误。
错误:未捕获(承诺中):错误:在“./+step1/step1.module”中找不到“Step1Module”。
step1.module:
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 以解决服务器端的问题。
任何帮助将不胜感激!
谢谢!
更新:step1 和 step2 的路由模块
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 { }
【问题讨论】:
-
我们可以看看您对模块 Step2Module 的路由定义吗?您确定您为此使用了 forChild 而不是 forRoot 吗?
-
@WilliamKLEIN 我刚才在我的帖子中添加了两个路由定义。是的,我确定我使用的是 Child。谢谢!
-
@JulieC.你的问题已经用我的回答解决了你的问题。请标记为答案。
标签: javascript angular angular4-router angular-module