Слушатель Firebase не обновляется в Ionic 3 View - PullRequest
0 голосов
/ 08 сентября 2018

Итак, я обнаружил странную ошибку. Я пытаюсь извлечь данные из firebase и отобразить их на странице в моем приложении Ionic 3, но данные отображаются, если я не щелкну какой-либо другой элемент на странице.

Вот код для получения сообщений:

constructor(
    public navCtrl: NavController, public afDb: AngularFireDatabase,
    public auth: AngularFireAuth
  ) {
    if (this.auth.authState){
      this.auth.authState.subscribe(user => {
        this.user = user;
        this.postsRef = firebase.database().ref('users/app/' + this.user.uid + '/posts');
        this.postsRef.on('value', (snap) => {

            //snapshotToArray() turns firebase snapshot of objects into an array of objects and returns it
            this.posts = this.snapshotToArray(snap);
            console.log(this.posts)
        })
      })
    }

snapshotToArray(snapshot){
    let returnArr = [ ];
    snapshot.forEach(childSnapshot => {
      let item = childSnapshot.val();
      item.key = childSnapshot.key;
      returnArr.push(item);
    });
    return returnArr;
  }

Вот код для просмотра:

<ion-row>
  <ion-col text-center>
      <ion-card *ngFor="let post of posts; let i = index;" style="width:50%; height:25%;">
        <ion-item>
          Post: {{post.title}}
        </ion-item>
      </ion-card>
  </ion-col>
</ion-row>

Данные для this.posts отображаются при входе в консоль. Тем не менее, пока я не щелкну элемент на странице, например, открою меню или коснусь кнопки, posts не будет отображаться на странице.

Однако, когда я использую this.postsRef.once(), posts отображаются на странице в том виде, в каком они должны быть. Это какая-то известная огненная база / ионная проблема?

Как я уже говорил ранее, this.posts захватывает снимок в массиве, поэтому он должен обновляться на странице.

...