5

firebase から認証オブジェクトを取得するまで待ちたいルートがあります。ここに私が持っているコードがあります:

ルート

{
  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 に答える