Ron*_*der 6 typescript angular2-routing angular
过去使用已弃用的路由器,路由到同一组件的一些组件:
一些组件
import {Component, Injector} from 'angular2/core';
import {IDataServiceSome} from './IDataServiceSome';
import {RouteData} from 'angular2/router';
@Component({
selector: 'Some',
templateUrl: './Some.html'
})
export class Some {
Model;
DataService: IDataServiceVendor;
constructor(routeData: RouteData, injector: Injector) {
var dataServiceToken = routeData.get('DataServiceToken');
this.DataService = injector.get(dataServiceToken);
this.Model = DataService.getSomeModel();
}
}
Run Code Online (Sandbox Code Playgroud)
IDataServiceSome
export interface IDataServiceSome {
getSomeModel(): Object;
}
Run Code Online (Sandbox Code Playgroud)
例如Comp1,但有Comp2,Comp3等......
import {Component} from 'angular2/core';
import {RouteConfigs, Router, ROUTER_DIRECTIVES} from 'angular2/router';
import {DataServiceSome1} from './IDataServiceSome1';
@RouteConfigs([
{ path: '/Some', name: 'Some', component: Some, data: { DataServiceToken: DataServiceSome1 } }])
@Component({
directives: [ROUTER_DIRECTIVES],
providers: [DataServiceSome1],
selector: 'Comp1',
template:
`<div>
<router-outlet></router-outlet>
<h1>Comp1 routed to Some</h1>
</div>`
})
export class Comp1{
}
Run Code Online (Sandbox Code Playgroud)
您可能已经猜到,有许多数据服务可以实现IDataServiceSome
,许多组件可以路由到Some
.选择使用哪种数据服务来自Some
使用已知数据令牌路由到组件的任何组件injector
.使用rc1和新路由器时,RouteData
不推荐使用或删除它,但是这个方案如何实现呢?
小智 2
等待Angular2添加data
后面的。就我而言,可以通过 DI 注入决定需要哪个数据服务的服务。我发现这有点过分了,它只是传递参数,就像在 URL 查询字符串中一样。唯一的区别是该参数不应该对用户可见,以获得更好的体验。
来源:
http://www.github.com/angular/angular/issues/8515
归档时间: |
|
查看次数: |
6070 次 |
最近记录: |