1
最新バージョンのngrx(4.1.1)と4.4.4を使用していますが、ここで問題を見つけることができず、助けが必要な場合があります。ngrxエフェクトはhttpを何度か呼び出します
私はthis.apiProvider.getLogisticsFolder()を呼び出し、http応答で動作するエフェクトを使用しています。私のレデューサーが新しい状態を返し、すべてが期待どおりに機能すると、私のレストサービスは2回目または数回呼び出されます(アクション/エフェクトは1回だけトリガーされ、残りはgetLogisticsFolder()です)。
私はここで何が欠けていますか?
@Effect()
syncFolders$ = this.actions$
.ofType<LogisticsFolderActions.SyncFolders>(LogisticsFolderActions.SYNC_FOLDERS)
.mergeMap(() => this.apiProvider.getLogisticsFolder()
.withLatestFrom(this._store.select(state => state.logisticsFolders), this._store.select(state => state.settings))
.map(([cloudLogisticsFolder, localLogisticsFolderState, settingsState]) =>
{
let tempLocalLogisticsFolder = localLogisticsFolderState.find(localLogisticsFolderState => localLogisticsFolderState.tenant === settingsState.baseURL);
if (tempLocalLogisticsFolder)
{
//now check if the folder structure has been added, deleted or changed
let updatedFolders = this.logisticsFolderProvider.checkAndProceedLogisticsFolderUpdate(cloudLogisticsFolder, tempLocalLogisticsFolder.logisticsFolders)
this.logisticsFolderProvider.checkAndProceedTasksUpdate(cloudLogisticsFolder, updatedFolders)
return new LogisticsFolderActions.SyncSuccess;
} else
{
let logisticsFolderState = <LogisticsFolder.State>{};
logisticsFolderState.tenant = settingsState.baseURL;
logisticsFolderState.logisticsFolders = cloudLogisticsFolder;
return new LogisticsFolderActions.SyncSuccess({ logisticsFolder: logisticsFolderState });
}
})
.catch((error) =>
{
this._store.dispatch(new AppActions.UnexpectedError(error.json().message));
return Observable.of(new LogisticsFolderActions.SyncFailed)
})
);
任意のヘルプ:)固定