2017-08-26 9 views
2

私は観測可能なオブジェクト配列をクリアします。私がしたこと:Observableをクリアする方法<Array[]> Angular?

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

マッピングなしでこれを行う直接観察可能なメソッド(rxjs)はありますか?

+0

https://stackoverflow.com/a/40971371/5468463? – Vega

+1

あなたが達成しようとしていることを説明できるかもしれません。観測可能なのはイベントのストリームなので、実際にはクリアできません。それを空の配列にマップすることで、放射された値をすべてそれに変換し、これがあなたが望むものであるかどうかはわかりません。 –

+0

申し訳ありません。私の目標は次のとおりです。サービスは、日付ピッカーを使用して選択した特定の日付のカスタムページセットを返します。だから私は日d1のカスタムページを取得し、日付ピッカーから別の日d2を選択すると、それはカスタムページの配列をクリアし、新しいhttp要求を作成し、新しい値を設定する必要があります。 – Maddy

答えて

1

ヒーローズチュートリアルのツアーから来ている場合は、そこに表示されるかなり基本的なサービスによって理解が制限されることがあります。ここで何をしたいんより完全に肉付けサービスの迅速なスケッチが

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を使用したと思われる...ですあなたは欲しい。

+0

素晴らしいまさに私が欲しいものです。 – Maddy

関連する問題