2
我想清除一個可觀察對象數組。我所做的:如何清除Angular中的Observable <Array[]>?
private pages: Observable<CustomPage[]>;
//clear
this.pages.map(p => p = []);
有沒有直接可觀察法(rxjs)這樣做沒有映射?
我想清除一個可觀察對象數組。我所做的:如何清除Angular中的Observable <Array[]>?
private pages: Observable<CustomPage[]>;
//clear
this.pages.map(p => p = []);
有沒有直接可觀察法(rxjs)這樣做沒有映射?
如果你來自英雄之旅教程,你的理解可能會受到他們在那裏展示的基本服務的限制。這裏是一個更全面充實的服務,你想要做什麼的速寫......
export class PageService {
private _pages = new ReplaySubject<CustomPage[]>(1);
private _dateFilter = new ReplaySubject<DateFilterCriteria>(1);
//Subscribe to this in your component
get pages(): Observable<CustomPage[]> {
return this._pages;
}
//Use this if you want to display the currently selected date
//filter somewhere (e.g. on your date filter control)
get dateFilter(): Observable<DateFilterCriteria> {
return this._dateFilter;
}
//PageAccess encapsulates requests against the Http service
constructor(private pageAccess: PageAccess) {
this._dateFilter.subscribe(dateFilter => this.fetchPages(dateFilter));
this.setNewDateFilter(null);
}
//Clears out the current list of pages, issues a new request
//for pages
private fetchPages(dateFilter: DateFilter) {
this._pages.next([]);
this.pageAccess.fetchPages(dateFilter).subscribe(pages => {
this._pages.next(pages);
});
}
//When your date filter control changes it should call this
//method
setNewDateFilter(dateFilter: DateFilter) {
this._dateFilter.next(dateFilter);
}
}
另外,我覺得我用DateFilter
和DateFilterCriteria
互換代表的一些類,您使用指示的網頁是什麼日期你要。
太棒了。正是我想要的。 – Maddy
https://stackoverflow.com/a/40971371/5468463? – Vega
也許你可以解釋你想要達到的目標。可觀察的事件是一系列事件,所以你實際上無法清除它。通過將它映射到一個空數組,您將把所有發射的值轉換爲該數組,並且我不確定這是您想要的。 –
對不起。我的目標是:服務返回一組使用日期選擇器選擇的給定日期的自定義頁面。假設我在第d1天獲得自定義頁面,並且當我從日期選擇器中選擇另一天d2時,它應該清除自定義頁面數組,創建新的http請求並填充新值。 – Maddy