我是Angular和Ionic的新手。我已经启动了一个简单的应用程序,可以将项目添加到Firebase Db中。到目前为止一切都很好。
我的组件ts文件中有两个方法:
add(item: string) {
this.items.push({
item: item
})
.catch(error => console.log('ERROR ' + error));
}
remove(key: string) {
this.af.object( `/items/${key}`).remove()
.catch(error => console.log('ERROR ' + error));
}
我想将上述方法移到单独的服务类中,因此我创建了一个新文件:
import {Injectable} from "@angular/core";
@Injectable()
export class ItemService {
constructor() {
}
}
但上述方法引用了items
,它是一个FirebaseListObservable,af
是一个注入控制器的AngularFireDatabase。
如何修改上述两种方法以便它们可以在服务中移动?
答案 0 :(得分:0)
在您开始时使用可注射服务并定义这些方法。然后firebase db将返回一个observable,在您的服务中,您可以处理这些数据,然后再次返回可以订阅使用和进程视图的observable
@Injectable()
export class ItemService {
constructor(private firebaseService: FirebaseService) {
}
add(item: string) {
// if firebase service returns observable, then map will precess and return observable whcih can be subscribed
this.fireBaseService.get().map( (data) => {
return this.items.push({
item: data.item
})
.catch(error => console.log('ERROR ' + error));
})
}
// same f0r remove
remove(key: string) {
return this.af.object( `/items/${key}`).remove()
.catch(error => console.log('ERROR ' + error));
}
}
// if I understood the question correctly