У меня есть маршрут, по которому я хочу подождать, пока не получу объект авторизации из 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, чтобы он возвращал Observable.of('whatever')
, то он регистрирует Object { auth: "whatever" }
, поэтому я почти уверен, что эта часть кода работает, просто по какой-то причине наблюдаемая аутентификация angularfire2 не работает в этом случае. (Я действительно не наблюдаемый эксперт, так что, вероятно, я делаю что-то не так).
Если я делаю this.af.auth.take(1).subscribe(auth => console.log(auth));
, он регистрирует объект авторизации, так что эта часть тоже работает.
Так что же вызывает эту проблему? Что я делаю не так?
(Используя последний маршрутизатор, angular2 и angularfire2.)