angular2 路由器在服务中?

angular2 router in service?

我正在使用 angular2 alpha27 和 systemjs 构建一个应用程序。有一天它应该是一个大应用程序,并且许多组件应该在应用程序内部使用 links。目前,为了确定路由器配置,我将其放入 app.ts:

@RouteConfig([
    { path: '/', as: 'overview', component: Overview },
    { path: '/requests', as: 'requests', component: Requests },
    { path: '/pane', as: 'pane', component: Pane }
])

问题:

如果我需要在其他组件中像这样将 link 放入 Overview <a router-link="overview">Overview</a> 我必须将所有路由器可注入组件导入该组件并定义 RouterConfig 并导入组件(如 Overview、Pane、等.. 上面提到的)使 linking 工作。

首先,将所有这些导入几个只需要 link 到概述的组件没有任何意义,例如。

其次,出于维护原因,我只想定义一次 @RouterConfig

我的想法是提供一项服务,该服务将定义 @RouterConfig 并使其可供任何组件使用。但是我不知道该怎么做。

拜托,有人知道安排此类代码的最佳方式吗?

可扩展性应该不是问题。

使用新的-angular-路由器,您可以将路由配置附加到 class/controller,而不是服务。这种方式实际上更加灵活,因为您甚至可以在应用内应用内应用,所有应用都有自己的路线。

把它想象成一棵树,树的任何分支都可以随时随地开始添加更多分支。这些新分支相互分离。

如果路由是在一个地方而不是在需要时定义的,那么与将路由附加到组件相比,您的代码将变得不那么模块化,然后可以在不中断的情况下四处移动,与文件结构并行。

我的建议:从树的角度思考,也许是大自然的意图。这个建议当然不适合所有用例,但它是最简单的行动方案。

不,您只需要按照您在主应用程序组件中的建议使用一次@RouterConfig。要 link 从一个组件到另一个组件,您需要导入 RouterLink 并作为指令传递给视图注释。

import { RouterLink } from 'angular2/router'

@Component({ selector: 'foo' })
@View({
  template: `<a [router-link]=['/bar']>Link to bar</a>`,
  directives: [RouterLink])
export class FooComponent {
}

我做了一个关于angular 2路由的视频教程,如果你有兴趣,一定要看看https://youtu.be/ZsGRiHSaOxM