#angular #typescript #ngrx
Вопрос:
У меня есть таблица, в которой я добавляю, удаляю и обновляю данные, для этого я использую ngrx, используя метод CRUD, у меня проблема, когда я пытаюсь восстановить ошибку, если она есть в моих компонентах эффекта. Ошибка находится в моем файле эффектов
Вот ошибка: Неожиданный токен. Ожидался конструктор, метод, средство доступа или свойство
Действия
export const ActionTypes = {
// addSucces: '[PeriodicElement] addSucces',
addError: '[PeriodicElement] addError',
preAdd: '[PeriodicElement] preAdd',
Add: '[PeriodicElement] Add',
};
export const addTable = createAction(
ActionTypes.Add,
props<{ payload: PeriodicElement }>()
);
export const addTableError = createAction(
ActionTypes.addError,
props<{ payload: any }>()
);
эффект
addTable = createEffect(() =>
this.actions.pipe(
ofType(TableActions.ActionTypes.preAdd),
mergeMap((name: any) =>
this.tableService.create(name.payload).pipe(
map(
(table) => TableActions.addTable({ payload: table }),
catchError((error) => of(TableActions.addTableError({payload: error})))
)
)
)
)
)
);
Я не знаю, можно ли так исправить ошибку
Ответ №1:
catchError
не должно быть внутри оператора карты, но на том же уровне внутри оператора трубы.
addTable = createEffect(() =>
this.actions.pipe(
ofType(TableActions.ActionTypes.preAdd),
mergeMap((name: any) =>
this.tableService.create(name.payload).pipe(
map((table) => TableActions.addTable({ payload: table })),
catchError((error) => of(TableActions.addTableError({payload: error})))
)
)
)
);