2017-10-20 18 views
1

J'utilise angulaire 4 avec firebase et je dois attendre mon service à charger, puis créer FirebaseListObservable de ma base de données .. mon code component.ts est leangulaire 4 firebase service d'attente pour être chargé en premier

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

le problème est que le constructeur obtient le authService.cusername comme undendifed parce authService n'a pas été complètement chargée .. est-il possible que je peux attendre le service à charger, puis exécutez le db.list('challenges', { etc...}); ?? J'ai essayé de faire les unes sur ngOnInit, mais il semble que je peux utiliser le db: AngularFireDatabase uniquement dans le constructeur ..

Répondre

1

Il suffit d'ajouter mot-clé private ou public avant db:, qui fera le paramètre aussi champ classe pour que vous puissiez accès dans d'autres méthodes via this.db:

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

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

Ceci est fondamentalement juste un sucre de syntaxe dans tapuscrit:

constructor(private service: MyServiceType) {} 

est Identique à:

private service: MyServiceType; 

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