2017-08-10 19 views
3

1つのメインコンポーネントと3つのサブコンポーネントの層を持つ深いネストされたアーキテクチャがあるとします。例:Angular EventEmitterとサービス経由の通信

todo->todo list->todo list action bar->todo list button 

その他のコンポーネントもあります。

私たちはEventEmitterを使用するとき、すべてのレイヤーをtodoコンポーネントにする必要があります。 代わりに、ボタンコンポーネントからtodoコンポーネントと通信するために、観測可能な通信サービスを持つことがあります。

一方的なやり方は何ですか?どうすればいいですか?

答えて

2

これはデザインの観点です。

一般的には、アプリケーションのサイズが中〜巨大で、次にBehaviour SubjectまたはReplay Subjectを使用して共有サービスを使用して他のコンポーネントにメッセージを送信する場合です。

また、より良いデザインは、ngrx i:eでreduxをAngularで使用することです。 これには唯一の欠点は、あなたのアクションとレデューサーのために書く必要がある余分なコードですが、プラスは全てのロジックが還元世界でダムコンポーネントとして知られているコンポーネントから分離されていることです。いったん完了すると、いつでも状態を追跡するためにngrx dev toolsを使用する人生の節約者になります。また、コードをデバッグして追加する方法や発生するイベントやアクションを簡単に追跡できます。

あなたのアプリのサイズが小さい場合にのみ、あなたはスパゲッティコードに包まれた複数のネストされたコンポーネントのように、イベントエミッタに行くことをお勧めします。すべての発砲イベントを追跡することはできず、コードを書き直すことになります。

イベントエミッタ対シェアードサービスの詳細についてLINK。それには特別な質問があります。

ngrxの詳細LINKこのリンクでは、ngrx v2を使用します。

私はngrx V.4を使用して、小さなアプリに働いて、次ているが、同じgitのためのGitのレポで、作業example

関連する問題