我有一条路线,我想等到从firebase获取auth对象。这是我的代码:
路线
{
path: 'random',
component: RandomComponent,
resolve: { auth: AuthService }
}
AuthService
@Injectable()
export class AuthService implements Resolve<any> {
constructor(private af: AngularFire) { }
resolve(): Observable<any> {
return this.af.auth.take(1);
}
}
RandomComponent
export class RandomComponent {
constructor(private route: ActivatedRoute) {
console.log(this.route.snapshot.data);
}
}
奇怪的是它记录了Object { }
,所以是一个空对象。如果我将AuthService.resolve更改为返回Observable.of('whatever')
,那么它会记录Object { auth: "whatever" }
,所以我很确定这部分代码是有效的,只是因为某种原因,angularfire2 auth observable不能正常工作这个案例。 (我真的不是一个可观察的专家,所以可能是我做错了什么。)
如果我this.af.auth.take(1).subscribe(auth => console.log(auth));
,它会记录auth对象,因此该部分也可以正常工作。
那是什么导致了这个问题?我做错了什么?
(使用最新路由器,angular2和angularfire2。)
答案 0 :(得分:0)
这应该是this.af.user.pipe(take(1))
或this.af.authState.pipe(take(1))
。