在Angular

时间:2017-05-29 00:17:27

标签: angular angular2-routing

我正在尝试在我的角应用中动态添加路线

const routes: Routes = [
 // my static routes
];

let sections = localStorage.getItem('sections');

if (sections) {
  JSON.parse(sections).forEach(section => {
    routes.push({ path: section.route, component: SectionComponent });
  });
}

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

这在dev中工作正常但在生产构建中不会添加动态路由。我已经尝试使用工厂来确保添加了路由但是使用函数调用构建失败。

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

我还尝试将我的部分组件设置为默认路由,这种路由主要有效,但是当我从一个部分转到另一个部分时,它不会触发路由更改并且它会保留在第一个部分。

const routes: Routes = [
  { path: '**', component: SectionComponent }
];

如果我去http://myap.com/firstsection它可以正常工作。 然后,如果我转到http://myap.com/secondsection,即使网址已更改,它仍会保留在第一部分。

如果我然后转到http://myap.com/oneofmystaticroutes然后转到http://myap.com/secondsection它就可以了。

1 个答案:

答案 0 :(得分:0)

我认为问题出在AOT的某个地方。

我的建议是将路由配置移动到AppComponent。 注入路由器和路由,然后附加您需要的路线,然后尝试使用 resetConfig

routes.push({ path: section.route, component: SectionComponent });
router.resetConfig(routes);