2017-02-01 6 views
0

Ionic2 + Angular2 + Meteorモバイルアプリでは、連絡先が無限スクロールオプション付きで表示されます。連絡先は、スクロール中に20のバッチに追加されるはずです。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の連絡先が保持され、新たに追加された連絡先はfindContacts()メソッドの新しい20の連絡先に置き換えられます。

したがって、常に40個の連絡先しか表示されません。連絡先を既存の連絡先リストに追加/マージするのはどうしてですか?どんな助力も非常に感謝しています。

ありがとう、 Annadurai。

+0

[結合RxJs Observable配列](http://stackoverflow.com/questions/41929179/combine-rxjs-observable-array) –

+0

"結合RxJs Observable配列"にコメントを追加すると、この質問が開かれているようです非常に小さいフォントとテキストはフォーマットされません。 – annadurai

+0

チーム、誰かがこれを手助けすることは可能でしょうか? – annadurai

答えて

0

問題の根本原因は、私のケースではmergeMapを実行しているときにパフォーマンスの問題が原因です。私はmergeMapを削除し、この報告された問題を解決するためにビジネス要件を別の方法で処理しました。

+0

どうやってそれを扱うのですか? – Mackelito

関連する問題