从当前模块获取所有路径 - Angular 2

时间:2017-05-11 05:36:57

标签: angular url-routing angular2-routing

我在我的样本中使用延迟加载。

export const appRoutes: Routes = [

    { path: 'comp1', loadChildren: 'app/components/comp1/comp1.module#comp1Module' },
   { path: 'comp2', loadChildren: 'app/components/comp2/comp2.module#comp2Module' },
. . .

]

comp1Module具有以下子路由路径

export const comp1Routes: Routes = [
   { path: 'comp1/default', component: DefaultComponent },
 ];

路由时我需要从模块中获取所有路由。

例如:我想从模块 comp1

获取所有路线

3 个答案:

答案 0 :(得分:4)

您可以通过注入路由器并拉取配置来使用router.config。

constructor(private router: Router){
  console.log(this.router.config);
}

答案 1 :(得分:2)

您需要将Router注入您的组件/服务。

例如:

constructor(private router: Router) { }

ngOnInit() {
  console.log(this.router.config);
}

答案 2 :(得分:0)

我使用这种方法:

将延迟加载的模块路由定义为根组件的子代:

const routes: Routes = [
    { path: '', component: LazyLoadedRootComponent,
        children: [
            { path: 'child1', component: Child1Component },
            { path: 'child2', component: Child2Component },
        ]
    }
];

@NgModule({
  declarations: [LazyLoadedRootComponent, Child1Component, Child2Component],
  imports: [
    CommonModule,
    RouterModule.forChild(routes)
  ]
})
export class LazyLoadedModule { }

然后从您的根模块组件中获取其子路由,如下所示:

export class LazyLoadedRootComponent implements OnInit {

    constructor(private route: ActivatedRoute) {
    }

    ngOnInit(): void {
        console.log(this.route.routeConfig.children);
    }
}