Jør*_*and 5 rxjs typescript ionic-framework tslint angular
Typescript(原子编辑器中的tslint)给了我一个打字稿错误,但我无法弄清楚如何设置正确的类型.
聊天组件:
private _chatObserver: Observable<firebase.database.DataSnapshot>
otherMethod () {
this._chatObserver = this._chat.observe(alarmId)
this._chatObserver.subscribe(
(messageSnap: firebase.database.DataSnapshot) => {
this.messages.push(messageSnap.val())
},
error => {throw error})
}
ionViewDidLeave() {
this._chatObserver.unsubscribe()
}
Run Code Online (Sandbox Code Playgroud)
_chat提供者:
public observe (alarmId){
let messagesRef = this._ref.child(`alarms/${alarmId}/messages`)
const observable = Observable.create(observer => {
messagesRef.on('child_added',(messageSnap) => {
observer.next(messageSnap)
},
(error) => observer.error(error)
)
return () => {
messagesRef.off('value')
};
});
return observable
}
Run Code Online (Sandbox Code Playgroud)
Mei*_*eir 16
Unsubscribe是订阅本身的一种方法.因此,在顶部添加:
private _chatSubscription;
Run Code Online (Sandbox Code Playgroud)
然后在你的otherMethod:
this._chatSubscription = this._chatObserver.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
在你的destroy/leave/termination处理程序中:
this._chatSubscription.unsubscribe();
Run Code Online (Sandbox Code Playgroud)
试试这个
private _chatObserver: Observable<firebase.database.DataSnapshot>
private _subscription:Subscription
otherMethod () {
this._chatObserver = this._chat.observe(alarmId)
this._subscription=this._chatObserver.subscribe(
(messageSnap: firebase.database.DataSnapshot) => {
this.messages.push(messageSnap.val())
},
error => {throw error})
}
ionViewDidLeave() {
this._subscription.unsubscribe()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7660 次 |
| 最近记录: |