angular - 如何使用ngrx效果显示从spring rest api到角度组件的异常消息?
问题描述
我有一个 angular 8 的示例应用程序 spring boot,我试图显示从 rest api 接收到的异常消息到 angular 应用程序。但我不知道如何通过组件订阅和显示。
这是我的
component.ts 代码
constructor(private store: Store<ApplicationState>) {}
this.store.dispatch(new SaveApplicationUserAction(applicationUser));
var err = this.store.select(s => s.applicationUsers.applicationUsers);
console.log(err);
我正在调度SaveApplicationUserAction
使用 ngrx 配置的操作
action.ts 代码
export class SaveApplicationUserAction implements Action {
readonly type = SAVE_APPLICATION_USER;
constructor(public payload: ApplicationUser) { }
}
export class SaveApplicationUserSuccessAction implements Action {
readonly type = SAVE_APPLICATION_USER_SUCCESS;
constructor(public payload: ApplicationUser) { }
}
export class HttpErrorAction implements Action {
readonly type = HTTP_ERROR;
constructor(public payload: string) { }
}
effects.ts 代码
@Effect()
saveApplicationUser$ = this.actions$.pipe(
ofType(actions.SAVE_APPLICATION_USER),
exhaustMap((action: actions.SaveApplicationUserAction) =>
this.userService.saveApplicationUser(action.payload).pipe(
// user tap to set my cookie and achieve my side effect
tap(user => {
console.log(user);
}),
// use map without any side effect
map((user: any) => new actions.SaveApplicationUserSuccessAction(user)),
catchError(error => of(new actions.HttpErrorAction(error))
)
)
)
);
reducer.ts 代码
class ApplicationUserState {
applicationUsers: ApplicationUser[];
applicationUser: ApplicationUser;
hasError: boolean;
errMessage: string;
}
const initialState: ApplicationUserState = {
applicationUsers: [],
applicationUser: null,
hasError: false,
errMessage: null
};
export function applicationUserReducer(state = initialState, action: formActions.ApplicationUserActions) {
console.log(state);
switch (action.type) {
case formActions.SAVE_APPLICATION_USER_SUCCESS: {
return state = {
applicationUsers: [...state.applicationUsers, action.payload],
applicationUser: action.payload,
hasError: state.hasError,
errMessage: state.errMessage
};
}
case formActions.HTTP_ERROR: {
const httpErrorAction :formActions.HttpErrorAction = action as formActions.HttpErrorAction;
return Object.assign({}, state, {error: httpErrorAction.payload});
}
default: {
return state;
}
}
}
我发生了一个异常,所以我ResponseEntity
从 spring rest api返回一个
if(ex.getMessage().contains("ConstraintViolationException")) {
return new ResponseEntity<>(new ResponseMessage(ex.getMessage()), HttpStatus.NOT_FOUND);
}
我不知道如何检查 http 的状态代码以及如何通过使用 ngrx 效果、动作和减速器的组件向前端用户显示异常消息。任何人都可以帮助我解决这个问题或任何建议或链接来参考。
解决方案
推荐阅读
- python - django 项目部署成功但服务器错误(500)
- json - Visual Studio 中没有所有 ARM 模板功能
- android - 在资源方面,是否可以无限循环使用 context.getString() 中的字符串刷新 TextView(每 n 秒)?
- microsoft-teams - isFullScreen 清单设置不执行任何操作
- python - Python中的混合继承
- rust - Cargo Doc 中的下标和上标字符?
- stm32 - SWV 异常跟踪在 Atollic Studio 中不起作用
- python - sys.stdout.write() 在交互模式下表现不同
- twilio - Twilio 可编程视频 SDK 问题
- flutter - 使用 Flutter WEB 将内容分享到社交媒体