Angular 8-如何在我的角度项目中构建包含所有路径的动态菜单?

时间:2020-05-03 19:09:24

标签: angular dynamic menu angular-ui-router angular-router

我正在使用loadChildren来组织我的路线,如下所示:

app-routing.module.ts

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

const routes: Routes = [
  { path: 'cadastros', loadChildren: () => import('./cadastros/cadastros.module').then((m) => m.CadastrosModule) },
  { path: 'admin', loadChildren: () => import('./admin/admin.module').then((m) => m.AdminModule) }
];

@NgModule({
  imports: [RouterModule.forRoot(routes, { useHash: false })],
  exports: [RouterModule]
})
export class AppRoutingModule {}

cadastros-routing.module.ts

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

const routes: Routes = [
  {
    path: '',
    children: [
      { path: 'geral', loadChildren: () => import('./geral/geral.module').then((m) => m.GeralModule) },
      { path: 'geo', loadChildren: () => import('./geo/geo.module').then((m) => m.GeoModule) },
      { path: 'pgv', loadChildren: () => import('./pgv/pgv.module').then((m) => m.PgvModule) }
    ]
  }
];

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

我想建立一个动态菜单,所以我尝试使用此菜单:

  constructor(private router: Router) {
    console.log('routers', this.router.config)
  }

这是结果: console.log(this.router.config)

但是我无法访问loadChildren来获取所有路线...如何获取所有路线来构建动态菜单?

1 个答案:

答案 0 :(得分:0)

搜索之后,我找到了lazyLoaded的解决方案,它称为:'preloaded'

https://angular.io/guide/router#preloading-background-loading-of-feature-areas

现在,我异步加载了所有模块,并且拥有了所有路由。但这不是很自然,所以我回到了创建此菜单的旧方法。