如何清除 Angular 中的 Observable<Array[]>?

Mad*_*ddy 5 observable rxjs angular

我想清除一个可观察的对象数组。我做了什么:

private pages: Observable<CustomPage[]>;
//clear
this.pages.map(p => p = []);
Run Code Online (Sandbox Code Playgroud)

是否有直接的 Observable 方法(rxjs)在没有映射的情况下做到这一点?

Ala*_*rds 8

我发现这非常有效并且非常简单。

this.someObservable = of([]);  <-- Assigning empty array to an observable.
Run Code Online (Sandbox Code Playgroud)

'of' 是 rxjs 库的一部分,它返回一个可观察值,因此您可以在此处将它与赋值运算符一起使用。

希望这可以帮助 :)


Pac*_*ace 2

如果您刚刚参加过《英雄之旅》教程,那么您的理解可能会受到其中显示的非常基本的服务的限制。这是一个更完整的服务的快速草图,它可以满足您的需求......

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

}
Run Code Online (Sandbox Code Playgroud)

另外,我认为我使用DateFilterDateFilterCriteria互换地表示一些类,您可以使用它来指示您想要的页面的日期。