выделить и удалить несколько сущностей
при выделении или его сбросе в сторе складируется список выделенных
при удалении оттуда берется массив и по нему пробегая для каждого жлемента диспатчится экшен на удаление, для экшена ,конечно прописан эффект, но пост реквест выполняется только для последнего из пачки
к сожалению в 1 запрос пачку удалить нельзя, только по 1 шт :(
что я не так сделал то? или как лучше сделать
вот сначала дергается это эффект, который потом дергает другие экшены:
@Effect({dispatch: false}) deleteSelectedCurrencies = this.actions$.pipe(
ofType(RisksActionTypes.DELETE_SELECTED_CURRENCIES),
withLatestFrom(this.risksStore.pipe(select('risks'))),
map(([action, risksState]) => {
risksState.currency_for_delete.forEach(currency => {
if (currency['currency_config']['currency_id']) {
this.appStore.dispatch(new RisksActions.RequestToDeleteCurrency(currency['currency_config']['currency_id']))
} else {
this.appStore.dispatch(new RisksActions.RemoveDeletedCurrencyFromGrid(fromRisks.TEMP_ITEM));
}
});
})
);
вот эффет для удаления:
@Effect() requestToDeleteCurrency = this.actions$.pipe(
ofType(RisksActionTypes.REQUEST_TO_DELETE_CURRENCY),
switchMap(action => {
return this.httpClient
.post(someURL${action['payload']}, {})
.pipe(
withLatestFrom(this.translate.get('notification_messages')),
mergeMap(([resp, messages]) => {
return [
{
type: RisksActionTypes.RM_DELETED_CURRENCY_FROM_GRID,
payload: action['payload']
},
{
type: NotificationsActionTypes.ADD_NOTIFICATION,
payload: {
message: messages.currency_was_deleted,
dismissible: true,
closeInterval: 1000,
type: 'success'
}
}
];
})
);
})
);
ofType(RisksActionTypes.REQUEST_TO_DELETE_CURRENCY), switchMap(action => { Замените switchMap на mergeMap
Обсуждают сегодня