не может разрешить данные с помощью firestore - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть приложение настройки firebase, и мне нужно получить все документы в коллекции, прежде чем рендерится соответствующий компонент.

Данные поступают по обычной подписке

this.db.getCountryList().subscribe(countryList => this.countryList = countryList); //working, I have the country list now

Но когда я использую распознаватель, как показано ниже, он не разрешает данные или ничего не происходит.

@Injectable()
export class CountryListResolver implements Resolve<Country[]> {

  constructor(private db: DatabaseService) { }

  resolve(): Observable<Country[]> {
    return this.db.getCountryList();
  }

}

сервис

getCountryList(): Observable<Country[]> {
    return this.db.collection<Country>(this.countryPath,ref => ref.orderBy('name', 'asc')).valueChanges();
  }

Маршрутизация

{ path: 'geo', component: GeographicalDataComponent, resolve: {countryList: CountryListResolver } },

компонент

this.route.data.subscribe(data => {
       this.countryList = data['countryList'];
});

и зарегистрировал мой распознаватель в корневом модуле, а другие распознаватели, не поддерживающие Firebase, работают нормально.

Почему этот преобразователь настроек не работает?

версия

firebase: 4.11.0

angularfire2: ^ 5.0.0-rc.6.0

Угловая: ^ 5.2.0

Спасибо заранее

1 Ответ

0 голосов
/ 26 мая 2018

Попробуйте это:

CHANGE:

return this.db.getCountryList();

TO:

const doc = this.db.getCountryList().toPromise();
return doc.then(data => {
    return data;
});
...