2016-09-14 18 views
0

親コンポーネントの子コンポーネントに送信されたParams変数にアクセスする必要があります。@Outputを使わずにAngular2 rc6の子/親コンポーネントでparams変数を共有するにはどうすればよいですか?

ルーティング::(抜粋)

{ 
     path: 'song', 
     component: SongExerciseComponent, 
     children: [ 
      { 
       path: 'reading/:id', 
       component: SongReadingComponent, 
      } 
     ] 
    } 

親コンポーネントは、ナビゲーションリンクを保持するだけのテンプレートである

は、私は次のような構造を持っています。そのような子コンポーネントのid VAR: 私がアクセスできる

ngOnInit(): void { 
    this.route.params.forEach((params: Params) => { 
     if (params['id'] !== undefined) { 
     let id = +params['id']; 

を今私は親テンプレートで使用する親コンポーネントで同じ変数を必要としています。

これを行う最も効果的な方法はどれですか?サービスを共有しますか? https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-and-children-communicate-via-a-service

+1

出力は問題ありませんが、データを複数レベルのコンポーネント階層に渡す必要がある場合は面倒です。共有サービスは、このケース(ナビゲーション)に適しているようです。サービス自体は、出力のイベントエミッタと同様に、観測可能イベントまたはEventEmitterになります。 – estus

答えて

1

あなたはシェアードサービスを作成したり、Angular2のために再来に触発Ngrxストアを、使用することができます。そこ

、あなたはそれについて読むことができます - https://gist.github.com/btroncone/a6e4347326749f938510

このソリューションの利点は、あなたが変更をサブスクライブし、それらに反応することができるということです。また、データは不変なので、間違って何かを変更することはありません。それがあなたのために重要でない場合は、単にサービスを使用してください。

+0

興味深い。 Ngrxについて知りませんでした。しかし、私はReduxのようなものを避けるためにAngular2を試していましたが、Angular2はまだ存在しないようです。 – Cruclax

関連する問題