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
我正在使用 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