* ngIf div show скрыть подписку Firestore - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь показать div, пока функция не возвращает документ из определенной коллекции Firestore, то есть ноль. Если есть какой-либо документ, этот div должен быть скрыт.

Есть идеи, как мне этого добиться? Я попробовал следующее, но это не работает:

service.ts

getEventosPropios() {
    const user = firebase.auth().currentUser;
    this.eventosPropios = this.afs.collection('eventos', ref => ref
    .where('autorId', '==', user.uid)
    ).snapshotChanges().pipe(
      map(actions => actions.map(a => {
        const data = a.payload.doc.data() as Evento;
        const id = a.payload.doc.id;
        return { id, ...data };
      }))
    );
    return this.eventosPropios;
  }

component.ts

eventosPropios: any;
eventosLista = true;

constructor( public fs: FirebaseService ) { }

ngOnInit() {
  this.eventosPropios = this.fs.getEventosPropios();
  this.eventosPropios.subscribe(() => this.eventosLista = false);
}

component.html

<div *ngIf="eventosLista">
  ...        
</div>
<div *ngFor="let evento of eventosPropios | async">
  ...
</div>

1 Ответ

0 голосов
/ 09 апреля 2019

Документы не отображаются, поскольку вы выполняете итерацию для возвращенного Subscription из метода this.fs.getEventosPropios().

Слегка изменить код для использования result, возвращенного методом getEventosPropios().проблема.

component.ts

eventosPropiosSub: Subscription; //should be use to unsubscribe later
eventosPropios: any;
eventosLista = true;

constructor( public fs: FirebaseService ) { }

ngOnInit() {
  this.eventosPropiosSub = this.fs.getEventosPropios()
    .subscribe((result) => {
        this.eventosPropios = result; // assign the returned result
        this.eventosLista = false
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...