【发布时间】:2019-05-13 12:45:58
【问题描述】:
我是ngrx 的新手。在ngrx-angular6 中不会发生API 调用。我已经尝试了一切。我找不到我错的地方。一整天都在这里浪费了。:(
在 Effects 中,我调用了一项服务并可以观察到
@Effect()
isFileFeed$ = this.dataPersistence.fetch(LandingActionTypes.LoadIsFileFeed, {
run: (action: LoadFileFeed, state: LandingState) => {
const url = `www.sample.com`;
this.service.apiRequest(url).pipe(
map(function(status){
new LoadFileSuccess(status);
}),
catchError(err => of(new LoadFileError(err.Description)))
);
},
onError: (action: LoadFileFeed, error) => {
console.error('Error', error);
return new LoadFileError(error);
}
});
在服务中,我使用了管道和水龙头。如果我直接调用订阅 API 调用调用。但在这里它不会调用任何 API。我也在网络选项卡中进行了验证。
apiRequest(url){
return this.http.get<any>(url)
.pipe(tap(response =>
this.log(`Service :api success: ${url}`);
),
catchError(this.handleError)
);
}
这是我在选择器中的代码
const getLandingState = createFeatureSelector<LandingState>('landing');
const getFileEnableStatus = createSelector(
getLandingState,
(state: LandingState) => state.isFileFeedEnabled
);
我已经通过订阅我的组件消耗了我的 observable,如下所示。
this.landingPageStore.pipe(select(landingSelector.landingQuery.getFileEnableStatus)).subscribe(res=>{
this.isFileEnabled = res;
})
【问题讨论】:
标签: angular observable ngrx ngrx-store ngrx-effects