我有以下文件:
Projects模块是app模块的子模块。我在app模块中包含项目模块的路由,并在构建期间收到以下错误:
ERROR in无法解决"项目"来自" ... app-routing.module.ts"。
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, Routes } from '@angular/router';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { BreadcrumbModule } from 'angular-crumbs';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { HeaderComponent } from './header/header.component';
import { MainComponent } from './main/main.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
import { ProjectsModule } from './projects/projects.module';
import { ProjectModule } from './project/project.module';
import { AppRoutingModule } from './app-routing.module';
import { ResizeDirective } from './resize.directive';
@NgModule({
imports: [
BrowserModule,
BreadcrumbModule,
NgbModule.forRoot(),
HttpModule,
ProjectsModule,
ProjectModule,
AppRoutingModule
],
declarations: [
AppComponent,
HeaderComponent,
MainComponent,
PageNotFoundComponent,
ResizeDirective,
],
bootstrap: [AppComponent]
})
export class AppModule {}
APP-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { ProjectsComponent } from './projects/projects.component';
import { ProjectComponent } from './project/project.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
const appRoutes: Routes = [
{
path: 'projects',
component: ProjectsComponent,
loadChildren: 'projects#ProjectsModule'
},
{
path: 'project',
component: ProjectComponent,
loadChildren: 'project#ProjectModule'
},
{
path: '',
redirectTo: '/projects/overview',
pathMatch: 'full'
},
{
path: '**',
component: PageNotFoundComponent
}
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes)
],
exports: [
RouterModule
]
})
export class AppRoutingModule {}
projects.module.ts
import { NgModule } from '@angular/core';
import { projectsRoutingModule } from './projects-routing.module';
import { OverviewComponent } from './overview/overview.component';
import { BusinessProfilesComponent } from './business-profiles/business-profiles.component';
import { PayoutsComponent } from './payouts/payouts.component';
import { ReportsComponent } from './reports/reports.component';
import { AsideComponent } from './aside/aside.component';
@NgModule({
imports: [
projectsRoutingModule
],
declarations: [
OverviewComponent,
BusinessProfilesComponent,
PayoutsComponent,
ReportsComponent,
AsideComponent
]
})
export class ProjectsModule {}
项目-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { OverviewComponent } from './overview/overview.component';
import { BusinessProfilesComponent } from './business-profiles/business-profiles.component';
import { PayoutsComponent } from './payouts/payouts.component';
import { ReportsComponent } from './reports/reports.component';
const projectsRoutes: Routes = [
{
path: 'overview',
component: OverviewComponent,
data: {
breadcrumb: 'Projects Overview'
}
},
{
path: 'business-profiles',
component: BusinessProfilesComponent,
data: {
breadcrumb: 'Business Profiles'
}
},
{
path: 'reports',
component: ReportsComponent,
data: {
breadcrumb: 'Reports'
}
},
{
path: 'payouts',
component: PayoutsComponent,
data: {
breadcrumb: 'Payouts'
}
}
];
@NgModule({
imports: [
RouterModule.forChild(projectsRoutes)
],
exports: [
RouterModule
]
})
export class projectsRoutingModule {}
答案 0 :(得分:5)
在loadChildren中,您必须指定文件(没有文件扩展名)和Module,用#分隔。 此外,您在使用loadChildren时也不需要该组件,因此模块将被延迟加载(未在初始页面加载时加载,仅在访问所选路径或使用PreloadAllModules时)。
在你的情况下: APP-routing.module.ts
这
...
{
path: 'projects',
component: ProjectsComponent,
loadChildren: 'projects#ProjectsModule'
},
...
到
...
{
path: 'projects',
loadChildren: './projects.module#ProjectsModule' // relative to app-routing.module.ts
},
...
项目-routing.module.ts
这
...
const projectsRoutes: Routes = [
{
path: 'overview',
component: OverviewComponent,
data: {
breadcrumb: 'Projects Overview'
}
},
...
到
...
const projectsRoutes: Routes = [
{
path: '',
component: ProjectsComponent
},
{
path: 'overview',
component: OverviewComponent,
data: {
breadcrumb: 'Projects Overview'
}
},
...
您可以从AppModule中删除其他Project组件的导入,这样只有在访问ProjectsModule的路径时才会加载它。
我希望这会有所帮助,如果有问题请回复。