我有一个firebase安装应用程序,需要在相关组件呈现之前获取集合中的所有文档。
数据来自正常订阅
gcc
但是当我使用下面的解析器时,它无法解析数据或没有任何反应。
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 } },
并在根模块中注册了我的解析器,其他非firebase解析器工作正常。
为什么这个设置解析器不起作用?
版本
火力:4.11.0
angularfire2:^ 5.0.0-rc.6.0
角:^ 5.2.0
先谢谢
答案 0 :(得分:0)
试试这个:
CHANGE:
return this.db.getCountryList();
TO:
const doc = this.db.getCountryList().toPromise();
return doc.then(data => {
return data;
});
答案 1 :(得分:0)
由于我自己很难解决这个问题,并且像您一样提出了这样的问题,我在意识到请求不是由解析程序结束后尝试了一下,因此解决此问题的关键只是通过变通管道完成请求正如我在问题中暴露的那样