5

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

4

1 回答 1

0

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

于 2019-07-04T11:16:41.027 回答