Используется, чтобы, с уходящим маршрутизатором, несколько компонентов, которые проложены к одному компоненту:Angular2 rc1, новый маршрутизатор и передачи данных
Некоторые Компонентный
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();
}
}
IDataServiceSome
export interface IDataServiceSome {
getSomeModel(): Object;
}
eg 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{
}
Как вы уже догадались, есть много услуг передачи данных, которые реализуют IDataServiceSome
и много компонентов, что путь к Some
. Выбор того, какая служба данных используется, исходит от любого компонента, который направляется на компонент Some
, используя маркер данных, известный как injector
. С выпуском rc1 и новым маршрутизатором RouteData
устарел или удален, но как этот сценарий реализуется вперед?
Но не поддерживает 'data' означает, что вы должны либо использовать строки запроса или маршрутные параметры. Оба они являются частью примера «тур по героям». В моем случае я не хочу, чтобы пользователь видел токен службы данных как часть URL-адреса, и для этого нет причин. Поэтому я не совсем понимаю, почему «данные» удалены. – RoninCoder
Маршруты - это просто URL и имя компонента. Также нет имен маршрутов. Если вам нужно передать другие данные, которые не отражены в URL-адресе, просто используйте общую службу. –
duh! так что вам понадобится услуга, чтобы сообщить компоненту 'Some' какую службу данных использовать? даже при этом, насколько сложно определить, какой компонент был последним, который установил службу данных, которая будет использоваться 'Some'? отлаживающий кошмар. С другой стороны, посредник может помочь, но я полностью вижу в нем ненужную сложность. – RoninCoder