2017-02-20 12 views
4

私はAngular2のFirebaseリストの登録を解除するにはどうすればよいですか?

tasks: FirebaseListObservable<ITask[]>; 

constructor(private af: AngularFire) { 
    this.tasks = this.af.database.list("/tasks"); 
} 

を使用してFirebaseリストに接続していますそして、私のユーザーがログアウトしたときに、今私は、その接続を解除します。

私は既にthis.tasks.unsubscribe()を試しましたが、メソッドが未定義であるように見えます(FirebaseListObservableは観測可能なので、これを試しました)。

また、ドキュメントに示唆されているようにthis.tasks.off()を試しましたが、それも未定義です。

最後に、私はthis.tasks = nullを試してみましたが、うまくいきましたが、それが正しい実装かどうかはわかりません。

答えて

7

this.tasksは、Observableではありません。Subscriptionで、退会できません。

手動であなたがしてすることができ、サブスクライブしている場合:

let observable = Rx.Observable.interval(1000); 
let subscription = observable.subscribe(x => console.log(x)); 
subscription.unsubscribe(); 

あなたがasync pipeを使用している場合、コンポーネントが破棄されるときに角度が自動的に解除されます。 source codeに基づいて、パイプの値がnullに変更されると、observableはサブスクライブされなくなりますが、これはどこのドキュメントでも指定されていません。私は、非同期パイプを使用するコンポーネントを明示的に破棄することをお勧めします。

+0

パーフェクト、私はコンポーネントを破壊します –

関連する問題