Заполнение экрана данными из нескольких наблюдаемых - PullRequest
0 голосов
/ 15 мая 2019

У меня есть экран, который заполняется объектом, возвращенным из хранилища, но я не могу вернуть данные двух запросов к одному и тому же onInit

Служба:

      export class TcpService implements MPersist{
      tcpsO: Observable<TcpID[]>;
      private tcpCollection: AngularFirestoreCollection<Tcp>;
      constructor(private db: AngularFirestore) { }

      addDoc(data: Tcp) {
        this.tcpCollection.add({ nome: data.nome, nivel: data.nivel, registro: data.registro })
      }
      editDoc(data:TcpID){
        this.tcpCollection.doc(data.id).set({ nome: data.nome, nivel: data.nivel, registro: data.registro })
      }

      removeDoc(id){
        this.tcpCollection.doc(id).delete();
      }

      getDocs() {
        this.tcpCollection = this.db.collection<Tcp>('tcps');
        return this.tcpsO = this.tcpCollection.snapshotChanges().pipe(
          map(actions => actions.map(a => {
            const data = a.payload.doc.data() as Tcp;
            const id = a.payload.doc.id;
            return { id, ...data }
          }))
        );

      }
    }
    export interface TcpID extends Tcp { id: string }

И длякомпонент:

    ngOnInit() {
        return this.service.getDocs().subscribe(
          res => {
            this.dataSource.sort = this.sort;
            this.dataSource.data = res;
          }
        );
      }

Так что я могу манипулировать данными, но когда я пытаюсь вернуть 2 разных запроса не работает, мне нужно заполнить компонент информацией из 2 разных запросов

1 Ответ

0 голосов
/ 15 мая 2019

При использовании источников данных рекомендуется устанавливать новый источник данных при изменении данных. Так что в основном что-то вроде:

this.dataSource = new DataSource(res)

может решить вашу проблему.

...