簡體   English   中英

如何清除 Observable<Array[]> 在角?

[英]How to clear Observable<Array[]> in Angular?

我想清除一個可觀察的對象數組。 我做了什么:

private pages: Observable<CustomPage[]>;
//clear
this.pages.map(p => p = []);

是否有直接的 Observable 方法(rxjs)在沒有映射的情況下做到這一點?

我發現這非常有效並且非常直接。

this.someObservable = of([]);  <-- Assigning empty array to an observable.

' of ' 是 rxjs 庫的一部分並返回一個 observable,因此您可以在此處與賦值運算符一起使用它。

希望這有幫助:)

如果您來自英雄之旅教程,您的理解可能會受到他們在那里顯示的非常基本的服務的限制。 這是一個更完整的服務的快速草圖,它可以滿足您的需求...

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);
  }

}

另外,我認為我交替使用DateFilterDateFilterCriteria來表示您用來指示所需頁面日期的某個類。

又短又甜

new Observable<[]>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM