2016-04-06 13 views
9

私はPopupComponent内部GridComponentを持っています。角度2孫から親コンポーネントにイベントを送信する方法は?

カスタムイベント「RowSelected」をポップアップコンポーネントの外部のコンポーネントに送信したいとします。

私は現在GridComponentからPopupComponentにイベントを送信し、外部にそれを転送しています。これは、私がPopupComponentsのトンを持つことを計画しているので、非常に辛いアプローチです。

イベント転送を行う他の方法はありますか?あなたは直接の親→子の関係を持っていないときはいつでも

+4

件名のサービスを使用する場合は、https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service –

+0

をご覧ください。返信ありがとうございます!私はこれをテストしなければならない。 –

+0

異なる** GridComponent **(たとえば、1つは人を含み、もう1つはジョブを含む)が同じサービスを共有するかどうか知っていますか? それは私には不幸なことです。 –

答えて

13

は、データを共有する(共有)サービスを使用し、および/またはイベントを送ります。サービスインサイド

、これを達成するために件名や観測を使用しています。

cookbookは、コンポーネント間の双方向通信を実現するために被験体を使用する方法の例を有します。

このSOポスト、Delegation: EventEmitter or Observable in Angular2は、観測を使用する方法の例があります。

+0

ありがとうございます! 'サービス(孫 - >サービス)のプロバイダなし ' –

+1

@LukaŠiljeのように聞こえます。コンポーネントの階層で十分に高いサービスを定義していません( 'providers'を使って)。 [階層型インジェクタ](https://angular.io/docs/ts/latest/guide/hierarchical-dependency-injection.html)をご覧ください。 –

+0

こんにちは。リリース(2.0.0)に変換するまでは動作していました。何か案が? 私はAppComponentのプロバイダにサービスを注入しています。 –

関連する問題