我NGRX商店篩選結果由兩組數據:preferenceGroups
持有選擇偏好值和stocks
組:從一個NGRX店減速器使用可觀察到的數據與另一個
有很多的preferenceGroups
,在一個兩種格式,一組布爾值或一個範圍:
"preferenceGroups": [
{
"name": "Sectors",
"type": "toggles",
"preferences": [
{
"label": "Sector 1",
"type": "boolean",
"value": true
},
{
"label": "Sector 2",
"type": "boolean",
"value": true
}
]
},
{
"name": "Exchange",
"type": "toggles",
"preferences": [
{
"label": "Exchange 1",
"type": "boolean",
"value": true
},
{
"label": "Exchange 2",
"type": "boolean",
"value": true
}
]
},
{
"name": "Price",
"type": "price-range",
"preferences": {
"label": "Price",
"type": "currency",
"value": {
"minimum": 0,
"maximum": 999
}
}
},
...
]
我也有一堆股票,都具有相同的領域,他們一般是這樣的:
"stocks": [
{
"state": {
"accepted": false,
"rejected": false
},
"change": -5.36,
"changePercent": -0.13,
"dividend": 12.05,
"equitySummaryScore": 8,
"exchange": "Exchange 1",
"price": 97.10,
"sector": "Sector 1",
...
},
...
]
我的過濾器的工作方式是針對每個preferenceGroup,我想要考慮任何具有與任何布爾過濾器設置爲true的值相匹配的股票,並且在範圍的情況下,該範圍內的任何值。
我可以用
this.stocks = this._store.select('stocks');
this.preferenceGroups = this._store.select('preferenceGroups');
什麼,我需要做的是通過使用this.preferenceGroups
數據過濾this.stocks
存儲過濾股票作爲可觀察得到所有從我的店裏NGRX股票和preferenceGroups作爲觀測量。
this.filteredStocks = [something I can't figure out]
例如,我列出的單隻股票將是一個比賽,因爲它有"exchange": "Exchange 1"
,"sector": "Sector 1"
和"price": "97.10"
偉大的迴應@KwintenP,這正是我所期待的。 – autoboxer
您提供的函數示例在哪裏存在?在像FilteredStockService這樣的新服務或其他計算商店可觀察服務中。 – GFoley83
這是邏輯我要麼放在一個智能組件,要創建流,並將其傳遞給一個愚蠢的組件。或者我會,但它會在我喜歡稱爲沙箱的抽象層中(閱讀這裏的內容:http://blog.brecht.io/A-scalable-angular2-architecture/ – KwintenP