2017-02-01 4 views
0

В мобильном приложении Ionic2 + Angular2 + Meteor контакты перечислены с опцией бесконечной прокрутки. Контакты должны быть добавлены в партию 20 во время прокрутки.Наблюдаемое слияние Array для Inifinite-scroll

import {Observable} from "rxjs"; 
    contacts: Observable<Contact[]>; 

    /* code to pull Contacts from collection */ 
    findContacts() :Observable<Contact[]> { 
      return Contacts.find({accessGroup: {$in: this.sourcingUser.accessGroup} 
              }, {sort: {firstName: 1}}) 
         .mergeMap<Contact[]>(contacts => 
          Observable.combineLatest(
          ...contacts.map(contact => 
           Suppliers.find({supplierId: contact.supplierId}) 
           .startWith(null) 
           .map(suppliers => { 
            if(suppliers){ 
             contact.supplier = suppliers[0]; 
            } 
            return contact; 
           }) 
          ))).zone();  
    } 


     // Code to append contacts 
     this.contactsSub = MeteorObservable.subscribe('contacts', options).subscribe(() => { 
      MeteorObservable.autorun().subscribe(() => { 
       if(!this.contacts){ 
        this.contacts = this.findContacts(); 
       } else { 
        this.contacts = this.contacts.merge(this.findContacts()); 
       } 
     }); 
     }); 

Этот код отлично работает, когда отображаются первые 20 контактов и следующие 20. Но после этого, в evertime, он удерживает первые 20 контактов, а новые прикрепленные контакты заменяются новыми 20 контактами из метода findContacts().

Таким образом, он всегда отображает только 40 контактов. Есть ли способ сохранить/добавить контакты в существующий список контактов? Любая помощь очень ценится.

Thanks, Annadurai.

+0

Возможный дубликат [Объединение массива RxJs Наблюдаемый массив] (http://stackoverflow.com/questions/41929179/combine-rxjs-observable-array) –

+0

Этот вопрос был добавлен как добавление комментариев к объединению RxJs Observable array. с очень маленьким шрифтом, а текст не форматируется. – annadurai

+0

Команда, возможно ли кому-то помочь в этом? – annadurai

ответ

0

Основная причина проблемы связана с проблемой производительности при выполнении mergeMap в моем случае. Я удалил mergeMap и обработал бизнес-требования по-разному, чтобы решить эту проблему.

+0

Как вы его обработали? – Mackelito

Смежные вопросы