2017-12-27 8 views
0

私はアプリケーションのコンテキストに応じて異なる方法でに反応することを観察可能なホットRxJSを持っています。子コンポーネントは、件名に加入されている場合は、子供が使用し、それ以外のイベント 文脈取り扱い

  • を処理する必要があります件名は、ディレクティブによって傍受いくつかのグローバルアクションに基づいて、新しいイベントを発し、その後私は

    • をしたいですグローバルハンドラ

    私は、被写体からの加入者数を取得し、複数のサブスクライバが含まれている場合は無視するグローバルハンドラを伝えるが、それはAPIの一部ではありませんので、それは右ではないかもしれないようにそれはそうすることができますそれを処理する方法。では、これを行う正しい方法は何ですか?また

    は、グローバルイベントハンドラは、ディレクティブ、サービスの一部であるべきか、それが新しいコンポーネントにすべきですか?

  • +0

    グローバルハンドラはオブザーバ自体ですか? – martin

    +0

    @martinグローバルハンドラは、サブジェクトにサブスクライブすることができます。私が思うに、イベントが発生したことを知るためには、それが必要です。 – Keith

    答えて

    0

    あなたはグローバルapp.serviceでグローバルイベントの件名を入れて、サブスクリプションの他のコンポーネントでそれを注入することができます。

    理想的なコンポーネントは、単に複雑なイベントを処理するかもしれない独自のサービスを持っていなければならないが、時々私は、直接グローバルサービスは、コードクリーナーを保つ注入感じるが。それ以外の場合、完全な分離が本当に必要な場合、またはUIドロップダウンリストなどのコンポーネントを幅広く再利用する必要がある場合は、イベントを発生させるために@Outputを使用することをお勧めします(btw angle EventEmitterはSubjectを継承します)。