मान लीजिए कि मैं स्टोर से रिकॉर्ड्स का एक सेट पुनर्प्राप्त करना चाहता हूं, उन्हें *ngFor
का उपयोग करके सूची में प्रदर्शित करें, उदा।आरएक्सजेएस और कोणीय 2 का उपयोग करके एक वास्तविक अवलोकन संग्रह कैसे बनाया जाए?
<ul>
<li *ngFor="let record in records | async">
...
</li>
</ul>
अब उपयोगकर्ता 'नई ...' बटन क्लिक करता है, एक और रिकार्ड की दुकान में जोड़ा जाता है और
recordAdded: EventEmitter<string>;
आग मेरे स्थान के बारे में बताने के लिए। तो मुझे वह नया रिकॉर्ड मिलता है - और वह रिकॉर्ड केवल स्टोर से और ... ओह, मैं इस अतिरिक्त रिकॉर्ड को प्रदर्शित करने के लिए अपना *ngFor
कैसे प्राप्त करूं?
ठीक है, तो मैं सभी रिकॉर्ड सरणी में, उदाहरण के
_records: Record[];
के लिए रखने के लिए और Observable<Record[]>
this.recordService.getAll().subscribe(r => this._records = r);
की सदस्यता लेकर इस सरणी भरने लेकिन इस सरणी एक Observable
ही होने की जरूरत है हो सकता है एक नया रिकॉर्ड होने पर उपभोक्ताओं को सूचित करने के लिए। तो
observableRecords = Observable.create(obs => {
this.recordService.getAll().subscribe(rec => {
this._records = rec;
obs.next(rec);
// Got the array published, now waiting for events
this.recordAdded.subscribe(rec => {
this._records.push(rec);
obs.next(this._records);
});
});
});
ओह ... इतना ही नहीं वहाँ भी है भूमि के ऊपर का एक टन के रूप में पूरे सरणी फिर से प्रकाशित हो जाता है हर बार एक नया रिकॉर्ड जोड़ दिया जाता है और, को देखने के लिए इस कष्टदायी है - सबसे अधिक संभावना है - कोणीय 2 होगा प्रत्येक मोड़ पर खरोंच से पूरी सूची को फिर से बनाएं।
चूंकि यह एक आम परिदृश्य है, मुझे लगता है कि ऐसा करने के लिए एक बेहतर तरीका होना चाहिए।