【发布时间】:2017-10-17 15:47:04
【问题描述】:
这是我的项目布局:
这里是返回用户ID的用户数据服务函数:
get uid(): BehaviorSubject<string> {
const uidSubject: Subject<string> = new Subject<string>();
this.afAuth.authState.subscribe((data) => {
uidSubject.next(data.uid);
});
return uidSubject;
}
然后这里是用户任务服务,它使用之前服务的 ID 获取任务:
get tasks(): BehaviorSubject<string> {
const tasksSubject: BehaviorSubject<string> = new BehaviorSubject<string>('no tasks available');
this.afs.collection(`users/${this.uid}/tasks`).valueChanges().subscribe(tasks=> {
if (tasks.length !== 0) {
tasksSubject.next(tasks);
}
});
return tasksSubject;
}
然后我在 App 组件中订阅以从任务服务获取数据,但用户 ID 显然是 undefined,因为任务函数在 uid 函数之前被调用。
那么如何确保用户数据服务在调用任务服务之前获得uid?
【问题讨论】:
标签: angular firebase angularfire angular2-services angular-services