不得不说这路由配置对比vue真是相当麻烦,第一次写,研究了好久,最后终于看懂了
首先是最外层的module里面需要配置路由
代码就写下路由核心的,杂毛代码都删了
可以看到,核心逻辑是import路由配置AppRoutingModule到NgModule里面的imports里面,然后providers里面引用了angular自带的路由相关的东西,这里就先不去了解干啥用的了
app.module.ts
import { HashLocationStrategy, LocationStrategy } from '@angular/common';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
declarations: [],
imports: [
AppRoutingModule,
],
providers: [
{ provide: LocationStrategy, useClass: HashLocationStrategy },
{
provide: ``,
useValue: ``
}
],
bootstrap: []
})
export class AppModule {
constructor() {
}
}
下面就是路由具体配置文件了
app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: 'xxx1',
loadChildren: () => import('./pages/xxx1-template.module').then(mod => mod.xxx1TemplateModule),
canActivate: []
},
{
path: 'xxx2',
loadChildren: () => import('./pages/xxx2-pattern.module').then(mod => mod.xxx2PatternModule),
canActivate: []
},
];
@NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],
exports: [RouterModule]
})
export class AppRoutingModule {}
下面说下xxx1TemplateModule这个组件要怎么写
需要配置一个routing和module文件
module文件就是app-routing.module.ts里面引用的mod.xxx1TemplateModule
然后文件里面引入了xxx1TemplateContainerComponent 也就是这个组件本身,还引入了xxx1TemplateContainerRoutingModule 也就是组件路由文件
module:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { xxx1TemplateContainerComponent } from './xxx1-template-container.component';
import { RouterModule } from '@angular/router';
import { xxx1TemplateContainerRoutingModule } from './xxx1-template-container-routing.module';
@NgModule({
imports: [CommonModule, RouterModule, AttackTemplateContainerRoutingModule],
declarations: [AttackTemplateContainerComponent]
})
export class xxx1TemplateModule{}
routing:路由文件引入每个tab所对应界面的组件
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { xxx1TemplateListComponent } from '../xxx1-template-list/xxx1-template-list.component';
// 其他的引入组件不写了
const routes: Routes = [
{
path: '',
component: xxx1TemplateListComponent ,
children: [
{
path: 'tab1',
component: tab1TemplateListComponent,
children: [
{
path: 'tab1-item1',
component: item1TemplateListComponent
},
{
path: 'tab1-item2',
component: item2AttackTemplateListComponent
}
]
},
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class xxx1TemplateContainerRoutingModule {}