链接服务可观察到的,并在组件与打字稿
平台 - Angualar 2 +打字稿+ angularFire2链接服务可观察到的,并在组件与打字稿
里面我user.service.ts,我有以下的代码,以使第一请求到终点在firebase中找出一些路径信息。然后,我想使用该路径信息执行第二个查询来查找有关该用户的详细信息。
getUserInformation(uid: string) {
this.angularFire.database.object('/pathForUid/' + uid).subscribe(results => {
let path = results.path;
return this.angularFire.database.object('/uses/' + path)
});
}
我觉得这是这个代码的一个问题,因为如果我有返回类型FirebaseObjectObservable(这是什么database.object回报,)我得到以下错误
我想要实现的是能够在我的login.component.ts文件中调用此函数,如下所示。目前,当我这样做,我得到一个红色下划线上我的订阅说
财产“订阅”上键入“无效
onLogin() {
this.loading = true;
this.userService.loginWithEmailPassword(this.loginForm.value.email, this.loginForm.value.password)
.then(
data => {
this.alertService.success('Login successful', true);
console.log('Login successful', data)
// This is what I want to achieve
this.userService.getUserInformation(data.uid).subscribe(result => {
console.log(result)
});
//this.router.navigate(['/login']);
this.loading = false;
},
error => {
this.alertService.error(error.message);
console.log('Error occured', error)
this.loading = false;
});
}
----- Update--不存在--- 我不确定发生了什么,因为我是从swift来的double return,只要我添加它,就会出现如图所示的错误,如果我不添加返回类型FirebaseObjectObservable(在I如你所提到的那样在开始时输入回报,我在订阅时遇到错误:“在订阅类型中不存在属性订阅,所以对我来说似乎是fu nction实际上是返回订阅而不是firebaseObjectObservable,我可以订阅。我如何改变它以便我可以订阅它?
你需要返回的东西(如错误说;-))
getUserInformation(uid: string): FirebaseObjectObservable<any> {
return this.angularFire ...
嗨Gunter,感谢您的回应。我已经尝试了几件事,请参阅我的更新问题 – user172902
如果您想返回'Observable',您不能调用'subscribe()',因为' subscribe()'返回一个'Subscription'',如果你用'map'替换'subscribe',你应该得到你想要的东西 –
神奇的函数图是多么的好,谢谢。 – user172902
您应该返回getUserInformation
里面的方法调用,否则返回void
。这显然不具有subscribe
方法..是它是无效:
getUserInformation(uid: string): FirebaseObjectObservable<any> {
return this.angularFire.database.object('/pathForUid/' + uid).subscribe(results => {
let path = results.path;
return this.angularFire.database.object('/uses/' + path)
});
}
嘿伙计。谢谢回复。请看我更新的问题。我不知道我是如何迅速从双回归中发生的。如果我不添加返回类型FirebaseObjectObservable
请张贴代码和错误消息文本而不是屏幕截图。额外的屏幕截图非常棒,但屏幕截图不可搜索。 –