2017-03-10 9 views
0

私は、モデルで利用できるプロパティの変更(timeRemaining)をリスニングする必要があるコンポーネントを持っています。角2 - モデル変更リスナ/観測可能(ベストプラクティス)

この目的のために、私のコンポーネントはサブジェクトにサブスクライブします。このサブジェクトはサブジェクトにサブスクライブします。このサブジェクトはサブジェクトに値(サブジェクト)プロパティの変更のこれは完全に機能しています。

私の質問は非常に簡単です:このSubjectはどこで宣言されるべきですか?私のモデルや私のモデルを扱うサービスでは?より良い、なぜある1私のモデルでは

onTimeExpired(model, callback){ 
    model.getTimeExpiredSubject().subscribe(
    () => { 
     // some logic here 
     callback(); 
    } 
} 

OR

onTimeExpired(callback){ 
    this.getTimeExpiredSubject().subscribe(
    () => { 
     // some logic here 
     callback(); 
    } 
} 

例:私のサービスで

?ありがとうございました。あなたがコールバックを渡している理由

答えて

0

:あなたは、観察を返すために持っているので、サービスは多くのコンポーネントで消費される可能性があるため

//service 
onTimeExpired(){ 
    return model.getTimeExpiredSubject(); 
} 

サブスクリプションは、サービス中であってはなりません。

あなたはコンポーネント

// in the component 
this.service.subsucribe(data =>{ 
// do something 
}) 
+0

OKのような消費者にサブスクライブする必要があります。しかし、私の場合は、すべての消費者に特定のロジックを適用する必要があります。だから私はコールバックを渡し、サブジェクトを返す代わりにサブスクリプションを返すことにしたのです(私の例では、ここでいくつかのロジックを参照してください)。 – Kiwidou

+0

しかし、あなたは 'subscribe'コールバックであなたのコールバックコードをコピーすることができます。 –

関連する問題