Angular2 アプリケーションで NGRX と RxJS を使用しています。レコードの更新を保存しようとすると、「UPDATE」アクションを生成し、API を呼び出してデータベースを更新したいと考えています。
問題は、「.filter ( action => action.type==UPDATE )」の後のすべてが 4 回呼び出されることです。
理由がわかりません。私は多くのこととコードの変更を試みますが、問題はまだここにあります...
私のコード:
private actions$ : BehaviorSubject<Action> = new BehaviorSubject<Action>({type: null, payload: null});
.../....
// catch employee selection
let update = this.actions$
.filter ( action => action.type==UPDATE )
// **** following are executed 4 times ****
.do( () => this._store.dispatch({type: REDUCER_UPDATING }) )
.mergeMap ( action =>this._APIService.updateEmployee(action.payload) ); //
// merge all stream and dispatch action
let all = Observable.merge (update, load, selectItem);
all.subscribe ((action:Action) => this._store.dispatch (action));
問題をライブで表示するには:
https://plnkr.co/edit/zq4AsKJYILfrgItDNbHo?p=preview
マスター パネルで従業員を選択します。詳細パネルで、保存ボタンをクリックします。API が 4 回呼び出されることがコンソールに表示されます。
REDUCER - {"type":"SELECTING_ITEM","payload":1}
REDUCER - {"type":"UPDATING"}
API - UPDATE_EMPLOYEE <====1
REDUCER - {"type":"UPDATING"}
API - UPDATE_EMPLOYEE <====2
REDUCER - {"type":"UPDATING"}
API - UPDATE_EMPLOYEE <====3
REDUCER - {"type":"UPDATING"}
API - UPDATE_EMPLOYEE <====4
REDUCER - {"type":"UPDATED"}
ご協力ありがとうございました !!