を渡し、同じ構成要素にルーティングいくつかのコンポーネント: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;
}
ご想像のとおり器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{
}
がCOMP1が、ありますが、多くのデータIDataServiceSome
を実装するサービスとSome
へのルートの多くのコンポーネントがあります。どのデータサービスを使用するかの選択は、injector
に知られているデータトークンを使用してSome
コンポーネントにルーティングするコンポーネントから発生します。 rc1リリースと新しいルータでは、RouteData
は廃止または削除されましたが、このシナリオはどのように進んでいますか?
しかしdata'は、クエリ文字列またはルートパラメーターを使用する必要がありますいずれかを意味し、 'サポートしていません。どちらも「ヒーローのツアー」の一例です。私の場合、私は本当にユーザーにURLの一部としてデータサービストークンを見せたくないので、その理由はありません。だから私は 'データ'がなぜ取り除かれたのかをよく理解していない。 – RoninCoder
ルートは単なるURLとコンポーネント名です。もうルート名もありません。 URLに反映されていない他のデータを渡す必要がある場合は、共有サービスを使用してください。 –
duh! 'Some'コンポーネントに使用するデータサービスを伝えるためのサービスが必要です。そうしても、「Some」によって使用されるデータサービスを設定する最後のコンポーネントがどれか分かりますか?デバッグの悪夢。反対側では、メディエーターが助けてくれるかもしれませんが、私はそれを完全に不要な複雑さと見ています。 – RoninCoder