ES5中的Angular 2路由?

Ben*_*lts 2 angular2-routing angular

角2 ES5小抄说,要做到这一点:

var MyComponent = ng.router.RouteConfig([
  { path: '/:myParam', component: MyComponent, as: 'MyCmp' },
  { path: '/staticPath', component: ..., as: ...},
  { path: '/*wildCardParam', component: ..., as: ...}
]).Class({
  constructor: function() {}
});
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何指定@Component该类的东西,以便我可以实际实例化它.例如,

ng.router.RouteConfig([...]).Component({})
Run Code Online (Sandbox Code Playgroud)

抛出异常,因为结果.RouteConfig没有.Component方法.同样,结果.Component没有.RouteConfig方法.你如何设置这个?

小智 6

我做了以下似乎运作良好的方式.

app.AppComponent = ng.core
    .Component({
       selector: 'the-app',
       template: `
          <h1>App!!!</h1>
          <a [routerLink]="['Children']">Children</a>
          <a [routerLink]="['Lists']">Lists</a>
          <router-outlet></router-outlet>
       `,
       directives:[
          app.ListsComponent,
          app.ChildrenComponent,
          ng.router.ROUTER_DIRECTIVES
       ]
    })
    .Class({
       constructor: [ng.router.Route, function(_router) {
           this._router = _router; // use for navigation, etc
       }]
    });
app.AppComponent = ng.router
    .RouteConfig([
       { path: '/', component:app.ListsComponent, name:'Lists' },
       { path: '/children', component:app.ChildrenComponent, name:'Children' }
    ])(app.AppComponent);
Run Code Online (Sandbox Code Playgroud)

由于这两个ng.core.Componentng.router.RouteConfig的装饰,你可以这样写:

app.AppComponent = ng.core.Class(...);
app.AppComponent = ng.core.Component(...)(app.AppComponent);
app.AppComponent = ng.router.RouteConfig(...)(app.AppComponent);
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.