2016-11-28 7 views
1

私は観察可能な配列を持っています。Subscribe to Unsubscribe()

私のngOnInit()メソッドでは、私はサブスクリプションを初期化します。

this.lineOrdersSub[line.$key] = this.af.database.list(this.businessService.path + 'line_orders/' + line.$key) 
     .subscribe((lineOrders) => { 
      this.line_orders[line.$key] = lineOrders; 
}); 

また、各サブスクリプションごとにチェックボックスがあります。チェックボックスをオンにすると(デフォルト)、サブスクリプションはアクティブになります(新しいデータを購読する)。

私は、チェックボックスのチェックを外したとき、私はこれを実行します。

unCheckmethod() { 
     this.lineOrdersSub[line.$key].unsubscribe(); //Unsubscribe to my subscription 
    this.line_orders[line.$key] = null; // Remove the data I get after the subscription (See first code snippet) 
    } 

を私のチェックを外し方法はうまく動作しますが、私は再びサブスクリプションを開始しようとしている後:

checkMethod() { 
this.lineOrdersSub[line.$key].subscribe(); 
} 

私が手に:

this.lineOrdersSub[line.$key].subscribe is not a function 

私の質問

  1. unsubscribeの後にサブスクリプションを購読する方法はありますか?不可能な場合は、他の方法でこれを行うことはできますか?

答えて

1

エラーは正しいです。あなたは呼んでいる:

this.lineOrdersSub[line.$key] = this.af.d ... .subscribe(...); 

をあなたはthis.lineOrdersSub[line.$key]Subscriptionオブジェクトを割り当てていることを意味しています。 Observableではない。

次に、.unsubscribe()を呼び出すと、明らかに正常に動作します。 subscribe()に呼び出すと、Subscribtionオブジェクトにsubscribe()メソッドがないために失敗します。

Observableを購読する必要があります。

+0

ありがとうmartin、私が間違っている場合は私を修正する - 私は宣言する必要があります1.サブスクリプション、2。2つの異なる変数を使用して同じ要素を観察する?また、私は自分のon-initサブスクリプション内にすべてを書き直さなければなりませんか? – TheUnreal

+0

@TheUnreal購読と購読の両方をできるようにしたい場合は、常に2つの変数が必要です。 Observable(これは 'subscribe(...) 'と呼ばれる)と' subscribe(...) '呼び出しから返されたSubscriptionオブジェクトを保持するもう一つのものを保持するものです。それは 'unsubscribe()'と呼ばれます。 – martin

関連する問題