2016-09-28 140 views
4

我想在我的Angular 2應用中掌握Redux狀態管理,並且想知道Redux狀態和Angular 2路由如何可以很好地一起玩。Redux狀態和Angular 2路由

例如,我有各種視圖(即具有單獨路線的組件)採用日期或日期範圍。因此,在我的應用欄中,我收到了一個按鈕,它將顯示用戶選擇日期的日曆。該視圖然後得到這個日期作爲查詢參數,

http://localhost:3000/view&date=20160928 

然後我就可以通過監聽激活路由查詢檢索組件內部的日期參數

this.route.queryParams.subscribe(params => <load records for date>); 

現在我會怎麼做這與終極版,也就是說,我應該如何將這個狀態保存在Redux商店?起初,我以爲我剛纔得到的日期參數,並派遣其作爲DATE_ACTION_CHANGE商店,然後又將聽狀態變化

date$ = this.ngRedux.select(state => state.date) 
    .subscribe(date => <load records for date>); 

是,這樣做的推薦的方法?只要我只有一個可觀察對象,它就可以工作。但是,我從各種來源獲取參數。例如,另一個參數是客戶的ID。這又是URL的一部分,

localhost:3000//client/45&date=20160928 

,當它變得很模糊,我應該用ID和日期更新存儲,然後監聽的狀態這兩個屬性的改變?如果一個人改變了,但另一個不改變呢?我有一種感覺,我做錯了,任何指針?

回答

4

你或許應該考慮什麼是以下庫:

https://github.com/ngrx/router-store(如果你使用的是NGRX /存儲)。

它提供了將angular/router連接到ngrx/store的綁定。它還provdes以下倉庫發送操作:

導航用一個新的狀態成爲歷史

store.dispatch(go(['/path', { routeParam: 1 }], { query: 'string' })); 

導航與替代目前的狀態在歷史

store.dispatch(replace(['/path'], { query: 'string' })); 

導航沒有推新的狀態成爲歷史

store.dispatch(show(['/path'], { query: 'string' })); 

僅改變查詢參數的導航ETERS

store.dispatch(search({ query: 'string' })); 

導航回

store.dispatch(back()); 

向前導航

store.dispatch(forward()); 

您還可以檢查此一:https://github.com/dagstuan/ng2-redux-router

+0

請注意,與NGRX /平臺的重構(主要版本4),您需要製作自己的路由器操作,如下所述:https://github.com/ngrx/platform/blob/maste R/MIGRATION.md#導航行動 – timbru31