我對RxJS(使用5.1.1)非常陌生,並試圖在使用angular-redux/store的Angular 2應用程序中理解它。Angular 2 RxJS過濾器到新的可觀察點
我已經建立了一個商店,並努力在我的應用程序中獲取我的狀態的不同部分。
現在,我試圖讓已加載的屬性設置爲true AppParts:
我的狀態:
export interface IAppState extends IRootState{
theme: Theme;
config: IConfig;
mainSubTitle: string;
appParts: AppPart[];
}
選擇:
@select(state => state.app.appParts) appParts$: Observable<AppPart>;
現在,我m試圖從這個可觀測數據中獲得濾波數組:
loadedAppParts = [];
ngOnInit() {
this.appParts$.filter(a => a.loaded).subscribe(a => { console.log(a); this.loadedAppParts.push(a); });
}
但是,這將返回一個空數組。我希望能夠使用異步管得到「loadedAppParts」如果可能的話太多,所以我也試着做以下幾點:
loadedAppParts: Observable<AppPart> = new Observable<AppPart>();
ngOnInit() {
this.loadedAppParts = this.appParts$.filter(a => a.loaded);
}
所以,我怎樣才能得到一個濾波陣列或可觀察從我的可觀察狀態?
忘記加我Rootstate:
export interface IRootState { };
和我的初始狀態:
export const INITIAL_STATE: IAppState = {
theme: THEMES.LightGreyBlue,
config: <IConfig>{
data: {
apiUrl: ''
},
general: {
appName: 'Default name',
appShortName: 'default'
}
},
mainSubTitle: 'Default',
appParts: [new AppPart('core', true)]
};
和顯示JSON調試(用於陣列例如)模板部分:
{{ appParts$ | async | json }} {{ loadedAppParts | json }}
當使用Observable時: {{ appParts$ | async | json }} {{ loadedAppParts | async | json }}
這將返回:[ { "name": "core", "loaded": true } ] null
你能展示模板部分嗎?當您嘗試將兩個互相引用的對象轉換爲JSON時,會發生此錯誤,我不認爲這是您想要執行的操作。使用數組時使用 – martin
:{{appParts $ |異步| json}} {{loadedAppParts | json}};當使用Observable時:{{appParts $ |異步| json}} {{loadedAppParts |異步| json}};最後一個返回[{「name」:「core」,「loaded」:true}] null – AppSum
從輸出看起來'appParts $'發出一個'AppPart'對象的數組,因此正確的類型是'Observable'。如果你嘗試用'this.loadedAppParts = this.appParts $ .mergeAll()。filter(a => a.loaded)來排放排放物;'是否有幫助? –
martin