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 を使用します。)