首先加载Angular 4 firebase等待服务

时间:2017-10-20 14:14:00

标签: angular typescript firebase firebase-realtime-database angularfire

我正在使用带有firebase的Angular 4,我需要等待我的服务加载,然后从我的数据库创建FirebaseListObservable。 我的component.ts代码如下

constructor(db: AngularFireDatabase,public authService: AuthService,public 
    afAuth: AngularFireAuth) {  
        this.challenges = db.list('challenges', {
          query: {
            orderByChild: 'challenged',
            equalTo: this.authService.cusername
          }
        });

问题是构造函数将 authService.cusername 作为未定义的,因为authService还没有完全加载..有什么办法我可以等待服务先加载然后再运行db.list('challenges', { etc...}); ??我尝试在ngOnInit上做一些,但似乎我只能在构造函数中使用 db:AngularFireDatabase

1 个答案:

答案 0 :(得分:0)

只需在private之前添加publicdb:关键字,即可使参数也为类字段,以便您可以通过this.db以其他方式访问该字段:

constructor(private db: AngularFireDatabase,public authService: AuthService,public 
afAuth: AngularFireAuth) { }

ngOnInit() {
    this.db.doSomething();
}

这基本上只是打字稿中的语法糖:

constructor(private service: MyServiceType) {}

与:

相同
private service: MyServiceType;

constructor(service: MyServiceType) {
    this.service = service;
}