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