Я пытаюсь представить коллекцию firestore в виде списка на html-странице, сначала я создаю Observable в списке из моего компонента, и он работает нормально, но я понимаю, что это должно быть в службе, я изменил свой код следующим образом:
в сервисном конструкторе:
this.tenantCollection = this.angularFirestore.collection('landlord').doc(this.user.uid).collection("tenants", ref => {
return ref.orderBy('name')})
this.tenantsList = this.tenantCollection.valueChanges();
и функция для возврата этого наблюдаемого (также в сервисе):
getTenants(){
return this.tenantsList;
}
компонент:
constructor(private landlordService: LandlordService, private router: Router, private route: ActivatedRoute,
private angularFirestore: AngularFirestore, private auth: AuthService) {
this.auth.user.subscribe(user => {
if (user) {
this.user = user;
this.landlordService.getTenants().subscribe(tenanes => {
this.tenants = tenanes;
console.log(this.tenants);
});
}
});
HTML:
<app-tenant-item *ngFor="let t of tenants | async; let i= index" [tenant]="t" [index]="i">
</app-tenant-item>
Этот список всегда пуст, хотя в этом случае есть значения для firestore (я поместил подписку в конструкторе, который ngOnInit активировал до того, как у меня появился пользователь).
Как я могу это исправить и получить изменения в реальном времени?