Выборка значения из подписанного Observable с динамической переменной - PullRequest
0 голосов
/ 29 декабря 2018

Я изучаю, как Observables работают через Angular и Google Firestore.

this.allinvoicesCollection = this.afs.collection('clients').doc(this.clientId).collection('inbox').valueChanges();
    this.allinvoicesCollection.subscribe(val => {
      this.fileUrl = val[this.currentIndex].downloadURL;
    })

Я загружаю fileUrl с кодом выше.

Я хочу обновлять fileUrl всякий раз, когдапеременная "this.currentIndex" изменяется, однако приведенный выше код явно не достигает этого.

Я понимаю, что это срабатывает только при изменении документа в коллекции.Как я могу заставить его срабатывать при обнаружении изменений в "this.currentIndex"?Я должен отметить, что this.currentIndex - это не Observable, а простая числовая переменная, измененная пользователем.

1 Ответ

0 голосов
/ 29 декабря 2018

делает текущий индекс Субъектом , и вы можете легко обнаружить изменения.

currentIndex= new Subject<number>();

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

onIndexChange(id:number){
    this.currentIndex.next(id);
}

Для второй части, пока вы подписываетесь allinvoicesCollection use flatMap.Вы можете проверить этот ответ о том, как делать вложенные подписки.

...