2016-10-08 29 views
0

,如果我有一個商店,包括preferences與樣品看上去就像對象不同的價值。首先我要的是所有這一切能搶我使用偏好:拉從NGRX /存儲在Angular2匹配的屬性

this.preferences = this._store.select('preferences');

我還想搶只有accepted: true喜好,並將結果保存爲Observable,所以我可以把它管道成Angular 2模塊使用async管道。我已經試過了諸如:

this.acceptedPreferences = this._store.select('preferences').filter(preference => preference.accepted === true);

,但我無法找到正確的語法,而一直沒能找到我要找的,使其工作一個很好的例子。我的真實應用程序更復雜,我需要跟蹤存儲對象的幾個屬性,以創建多個數據子集以通過我的應用程序。有可能我應該使用單獨的縮減器來存儲它們,但是因爲它們都引用相同的數據集,所以使用Observables處理子集並篩選出結果似乎是適當的。

回答

1

您的偏好不會變平,select發出的值將是一個偏好數組,其中的數組會隨着變化而發出新的數組。

您可以使用RxJS map運營商和Array.prototype.filter方法來過濾你的喜好的數組:

this.acceptedPreferences = this._store 
    .select('preferences') 
    .map((preferences) => preferences.filter((preference) => preference.accepted)); 

所得acceptedPreferences觀察到會噴出接受喜好的數組只要在店裏變化的偏好。

+0

完美的工作,謝謝@cartant。 – autoboxer