Angular 2路由器 - 使用angularfire2解析auth

And*_*rew 5 angular2-routing angularfire2 angular

我有一条路线,我想等到从firebase获取auth对象.这是我的代码:

路线

{
  path: 'random',
  component: RandomComponent,
  resolve: { auth: AuthService }
}
Run Code Online (Sandbox Code Playgroud)

AuthService

@Injectable()
export class AuthService implements Resolve<any> {

  constructor(private af: AngularFire) { }

  resolve(): Observable<any> {
    return this.af.auth.take(1);
  }

}
Run Code Online (Sandbox Code Playgroud)

RandomComponent

export class RandomComponent {

  constructor(private route: ActivatedRoute) {
    console.log(this.route.snapshot.data);
  }

}
Run Code Online (Sandbox Code Playgroud)

很奇怪它记录Object { },所以一个空对象.如果我将AuthService.resolve更改为return Observable.of('whatever'),那么它会记录Object { auth: "whatever" },所以我很确定这部分代码是有效的,只是因为某种原因,angularfire2 auth observable在这种情况下不起作用.(我真的不是一个可观察的专家,所以可能是我做错了什么).

如果我这样做,this.af.auth.take(1).subscribe(auth => console.log(auth));则记录auth对象,以便该部分也正常工作.

那是什么导致了这个问题呢?我究竟做错了什么?

(使用最新的路由器,angular2和angularfire2.)

G M*_*Man 0

这应该是this.af.user.pipe(take(1))this.af.authState.pipe(take(1))