Попробуйте удалить var postInFirebase =
из строки подписки, поскольку Observer.subscribe
возвращает объект Subscription
синхронно до вызова асинхронного обратного вызова.Это, вероятно, приведет к тому, что компилятор TypeScript назначит тип Subscription
вашей переменной postInFirebase
и выдаст ошибку компиляции.
updatePost(localPost){
this.getPostById(localPost.$key).subscribe(dataLastEmittedFromObserver => {
let postInFirebase = dataLastEmittedFromObserver
console.log(postInFirebase)
postInFirebase.update({content: localPost.content});
});
}
Или даже лучше
updatePost(localPost){
this.getPostById(localPost.$key).subscribe(postInFirebase => {
postInFirebase.update({content: localPost.content});
});
}
Вы, кажется, запуталисьпо асинхронной подписи Observables.Когда вы звоните var value = Observable.subscribe((data) => { ...});
, тогда value
будет подпиской, а НЕ наблюдаемыми данными, вы можете получить доступ только к наблюдаемым данным ВНУТРИ асинхронного обратного вызова.Это заставляет меня думать, что ваш deletePost
метод также не будет работать.