Her biri bir son tarih olan bir Görevler koleksiyonu içeren sahte bir dosyam var. Şu anda (aşağıda) Abone olduğumda alay konusu Görevlerin toplanmasını döndüren basit bir gözlemlenebilir yaratım var. Benim anlayamadığım şey, düz bir Görev dizisini, son kullanma tarihlerine göre gruplandırmak için nasıl işleyebildiğim;Angular2 RxJS - Alay edilmemiş bir hizmet için gözlenebilir bir oluşturma oluşturma
// Current data structure (unstructured)
[{due: "2016-01-01"}, {due: "2016-01-01"}, {due: "2016-01-02"}, ...]
// Desired structure for consumption
{
"2016-01-01": [{...}, {...}],
"2016-01-02": [{...}, {...}, {...}],
"2016-01-03": [{...}]
}
Şu andaki gözlemlenebilir üretim kodum aşağıdaki gibidir;
şöyle benim bileşeninde tüketilen// Service...
tasks: Observable<Task[]>;
// init() called from the constructor
private init() {
this.tasks = Observable.create(observer => {
observer.next(mockTasks);
});
}
getTasks() {
return this.tasks;
}
;
// Component...
ngOnInit() {
this.taskService.getTasks().subscribe(tasks => {
this.tasks = tasks; // Contains the collection of tasks as expected
});
}
Bu iyi çalışıyor - Görevlerimi beklediğim gibi geri alıyorum. Yukarıdakileri gerçekleştirmek için groupBy
operatörünü kullanmayı denedim ancak Observable.create()
aracılığıyla oluşturulan gözlenebilir, bu yönteme sahip görünmüyor. Bunu başarmaya çalışmak için this resource'a başvurdum ve .create()
yerine Observable.from()
kullanıldığını fark ettim, ancak bu da hizmetimde kullanılabilir bir işlev olarak görünmüyor.
- (örneğin
groupBy
gibi) yukarıdaki gibi (ve nasıl bu başarılabilir) verileri biçimlendirme ile gitmek yolu RxJS operatörleri kullanarak mı? Yoksa el ile biçimlendirilmeli mi? - 1'e yanıtla ilgili olarak - bu nerede yapılmalıdır?
Teşekkürler!
Her zaman 'Observable.from (mockTasks) 'veya' Observable.of (mockTasks) 'gibi basittir. Hangi çıktıya ihtiyacınız olduğuna bağlıdır, çünkü observer.next (mockTasks), birçok nesne değeriyle değil, tek bir dizi değeriyle gözlenebilir bir değer yaratır.İstenen herhangi bir yöntem yoktur, "import rxjs/add/observable" ve "import rxjs/add/operator" ile manuel olarak eklenmelidir, aksi takdirde Angular çekirdek modülleri tarafından eklenmiş olan birkaç temel yöntemle sonuçlanır. – estus