如何在 Angular 2 的多个文件中拆分 app-routing.module.ts?
How to split app-routing.module.ts in multiple files in Angular 2?
考虑到图像,我有一个组件(1)+模块(2)+路由(3)(在“app-routing.module.ts”中)。为了避免“app-routing.module.ts”中的代码过多,我想将路由代码 (3) 移到其他文件中(假设为“product.routes.ts”)。考虑到我使用的是 Angular 2,我该怎么做?谢谢!
这将是我使用的 AppComponentRoutingModule
,它可以用更多的文件扩展,通常是每个嵌套路由一个路由文件(将导入到相应的模块中)。组件和路由可能会有所不同,但它通常是这样工作的(为简洁起见跳过了守卫):
创建 src/app/routes/app.routes.ts
内容相似:
import { Routes } from '@angular/router';
import { ErrorPage } from 'src/app/pages/error/error.page';
export const appRoutes: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' }, // main entry point.
{ path: 'home', loadChildren: () => import('src/app/pages/home/home.module').then(m => m.HomeModule) },
{ path: 'error/:id', component: ErrorPage, pathMatch: 'full' },
{ path: '**', redirectTo: '/error/404' }
];
嵌套路由看起来差别不大,例如 src/app/routes/home.routes.ts
:
export const homeRoutes: Routes = [{
path: '',
component: HomePage,
children: [
...
]
}];
创建 src/app/app.component.routing.module.ts
内容相似:
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule } from '@angular/router';
import { appRoutes } from './routes/app.routes';
@NgModule({
imports: [
RouterModule.forRoot(appRoutes,{preloadingStrategy: PreloadAllModules})
],
exports: [ RouterModule ]
})
export class AppComponentRoutingModule {}
然后在app.module.ts
中导入AppComponentRoutingModule
:
import { RouterModule } from '@angular/router';
import { AppComponent } from 'src/app/app.component';
import { AppComponentRoutingModule } from 'src/app/app.component.routing.module';
...
@NgModule({
declarations: [ AppComponent ],
imports: [
RouterModule,
AppComponentRoutingModule,
...
],
bootstrap: [ AppComponent ]
})
export class AppModule {}
为了启用详细日志记录,enableTracing: true
是你的朋友。
考虑到图像,我有一个组件(1)+模块(2)+路由(3)(在“app-routing.module.ts”中)。为了避免“app-routing.module.ts”中的代码过多,我想将路由代码 (3) 移到其他文件中(假设为“product.routes.ts”)。考虑到我使用的是 Angular 2,我该怎么做?谢谢!
这将是我使用的 AppComponentRoutingModule
,它可以用更多的文件扩展,通常是每个嵌套路由一个路由文件(将导入到相应的模块中)。组件和路由可能会有所不同,但它通常是这样工作的(为简洁起见跳过了守卫):
创建 src/app/routes/app.routes.ts
内容相似:
import { Routes } from '@angular/router';
import { ErrorPage } from 'src/app/pages/error/error.page';
export const appRoutes: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' }, // main entry point.
{ path: 'home', loadChildren: () => import('src/app/pages/home/home.module').then(m => m.HomeModule) },
{ path: 'error/:id', component: ErrorPage, pathMatch: 'full' },
{ path: '**', redirectTo: '/error/404' }
];
嵌套路由看起来差别不大,例如 src/app/routes/home.routes.ts
:
export const homeRoutes: Routes = [{
path: '',
component: HomePage,
children: [
...
]
}];
创建 src/app/app.component.routing.module.ts
内容相似:
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule } from '@angular/router';
import { appRoutes } from './routes/app.routes';
@NgModule({
imports: [
RouterModule.forRoot(appRoutes,{preloadingStrategy: PreloadAllModules})
],
exports: [ RouterModule ]
})
export class AppComponentRoutingModule {}
然后在app.module.ts
中导入AppComponentRoutingModule
:
import { RouterModule } from '@angular/router';
import { AppComponent } from 'src/app/app.component';
import { AppComponentRoutingModule } from 'src/app/app.component.routing.module';
...
@NgModule({
declarations: [ AppComponent ],
imports: [
RouterModule,
AppComponentRoutingModule,
...
],
bootstrap: [ AppComponent ]
})
export class AppModule {}
为了启用详细日志记录,enableTracing: true
是你的朋友。