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

时间:2016-07-04 17:29:42

标签: angular angular2-routing angularfire2

我有一条路线,我想等到从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。)

1 个答案:

答案 0 :(得分:0)

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