angularfire2 для наблюдаемой подписки пожарного магазина по одному за раз - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу, чтобы в пожарном магазине можно было наблюдать предметы.Но проблема в том, что он подписывается один раз.Ниже мой код:

В провайдере:

this.allSponser = this.afs.collection<Sponsoremphasized text('sponsors').snapshotChanges().pipe(map(actions => { 
    return actions.map(a => 
    { 
        const data = a.payload.doc.data() as Sponsor; 
        data.id = a.payload.doc.id; 
        return data; 
    }); 
})); 

на странице регистрации:

this.allSponser.subscribe(data=>{ console.log(data); }) 

печать в первый раз при загрузке, если я возвращаюсь к любому другомустраница и возвращаясь к повторной регистрации это не печать.

1 Ответ

0 голосов
/ 19 сентября 2018

Прежде всего, просто упомянув, что когда вы уходите от своего компонента, он будет разрушен и будет воссоздан, так что имейте в виду, что вам нужно подписаться на observables в ngOnInit и unsubscribe в 'ngOnDestroy'

Другой момент, я обычно возвращаю observalbe из моего сервиса что-то вроде этого

getSoponsors() {
return this.afs.collection<Sponsoremphasizedtext>('sponsors').snapshotChanges().pipe(map(actions => { 
    return actions.map(a => 
    { 
        const data = a.payload.doc.data() as Sponsor; 
        data.id = a.payload.doc.id; 
        return data; 
    }); 
})); 
}

, затем в моем компоненте

isAlive: boolean = true

ngOnInit() {
  this.service.getSoponsors()
    .pipe(takeWhile(() => this.isAlive))
    .subscribe(data => ...)
}

ngOnDestroy() {
  this.isAlive = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...