私は2週間だけAngular 2で作業していますので、慎重にしてください。ありがとうございました。私はメインコンポーネント(pageComponent)を持っています。そのテンプレートの中には、それぞれ独自の関数とプロパティを持つ他の2つの小さなコンポーネント(tableComponentとfilterComponent)があります。子コンポーネントの1つで作成されたイベントをキャッチし、同じ親の別の子コンポーネントに伝播するにはどうすればよいですか?つまり、同じ親コンポーネントのテンプレート内の2つの兄弟コンポーネント間でイベントを伝播して通信する方法はありますか?角2 Child1-Parent-Child2イベントの伝搬
0
A
答えて
1
ここにはいくつかのオプションがあります。
最初の子コンポーネントは@Ouput
デコレータを使用してイベントを送出し、 はそのイベントハンドラに兄弟に対してアクションを呼び出させることができます。
など。兄弟コンポーネント
export class TableComponent {
@Output() anEvent: EventEmitter<any> = new EventEmitter<any>();
..
}
export class FilterComponent {
callMeWhenSomethingHappens($event){
..
}
}
イベントが放出されるとき、フィルタコンポーネントを呼び出すために#theFilter
ローカル変数を使用して親コンポーネントテンプレート。
<app-filter #theFilter>
</app-filter>
<app-table (anEvent)="theFilter.callMeWhenSomethingHappens($event)">
</app-table>
(それらはrouter-outlet
によって作成された場合など)兄弟コンポーネントは、テンプレート内の各他へのアクセスを持っていない場合にもshared serviceを使用して見て可能性があります。
1
Fluxパターンを使用できます。基本的には、コンポーネントがサービスから公開されたイベントを購読するようにします。サービスはシングルトンなので、コンポーネントツリーにどれだけ深くかかわらず、コンポーネント間で提供されるデータを共有することができます。 How can I maintain the state of dialog box with progress all over my Angular 2 application?
関連する問題
- 1. .NETの伝搬パイプは?
- 2. OPNET Modelerの伝搬遅延14.5
- 3. バックボーンモデルを収集イベントの伝搬に防ぐ方法はありますか?
- 4. コンテンツカルーセル内で編集可能なイベント伝搬を引き起こします
- 5. 角度停止イベントの伝播
- 6. 角度2ストップのクリックイベントの伝播
- 7. 子どもへのxmlns伝搬を無効にする方法
- 8. なぜクリックイベントが伝搬していないのですか?
- 9. 異なる要素の伝搬を停止する
- 10. フィードフォワード逆伝搬の重みは変化しません
- 11. 角2、バインディングpageshowイベント
- 12. 角度2イベントが
- 13. 角度2フォーカスクリック/イベント
- 14. 角度2のブートストラップドロップダウン "open"イベント
- 15. 2つのモデルと搬送波
- 16. ng Forイベント(クリック)角度2
- 17. イベント伝播はAngular2
- 18. Flash AS3イベント伝播
- 19. setTimeoutとイベントの伝播
- 20. ダーツの角2 - 非標準のJavaScriptイベント
- 21. 角2 - 子コンポーネント内のイベントへのコールバック
- 22. 角度2のバインディングとイベントの検出
- 23. イベント伝播の混乱
- 24. テーブルセルの角度2 Ts可能なイベント
- 25. 角2の `change`イベントとは何か
- 26. 角度2のイベントを聞く
- 27. 角2 - ContentEditable 2ウェイバインド - 2回目のonBlur()イベントの後の更新
- 28. 角2はngSubmitの伝播を停止できません
- 29. 角2ルータグローバル状態変更イベント
- 30. 角度2、routerOnActivate方法は、OnActivateイベント
[OK]を、私は2つのコンポーネントに伝搬するサービスを必要としない:ここでは一例です。同じ親コンポーネント(つまり、親コンポーネントに2つの挿入ポイントがあり、2つの子コンポーネントがそのそれぞれのセレクタを使用して挿入されていることを意味する)から別のコンポーネントにイベントを伝播する必要があります。 –
兄弟コンポーネントは直接お互いに話すべきではありません。これは、コンポーネントとその親、およびコンポーネントとその兄弟の間の結合を作成します。時間が経つと、このパターンを維持することは困難です。より良いパターンは、データを一方向に伝播することです:コンポーネント - >イベント - >サービス - >加入コンポーネントに伝播する – pixelbits