我正在使用 ToastrService 显示服务器错误通知。但这似乎不起作用。在 Ui 中,如果由于支持的问题导致获取请求未将数据加载到表格视图中,如何在特定的 UI、组件中显示 Toast 消息?我是否需要在该特定组件中添加诸如超时之类的内容或app.component.ts file.
这是我的 httpInterceptor 类。
@Injectable({
providedIn: 'root'
})
export class InterceptorService implements HttpInterceptor {
constructor(public toasterService: ToastrService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
tap(evt => {
if (evt instanceof HttpResponse) {
if (evt.body && evt.body.success) {
this.toasterService.success(evt.body.success.message, evt.body.success.title, {positionClass: 'toast-bottom-center'});
}
}
}),
catchError((err: any) => {
if (err instanceof HttpErrorResponse) {
try {
this.toasterService.error(err.error.message, err.error.title, {positionClass: 'toast-bottom-center'});
} catch (e) {
this.toasterService.error('An error occurred', '', {positionClass: 'toast-bottom-center'});
}
//log error
}
return of(err);
}));
}
}
这是我的 app.module.ts 文件
imports: [
ToastrModule.forRoot(
{positionClass: 'toast-bottom-center', timeOut: 5000,
preventDuplicates: true,
closeButton: true,
progressBar: true,
maxOpened: 1,
autoDismiss: true,
enableHtml: true},
),
],
providers: [
{provide: HTTP_INTERCEPTORS, useClass: InterceptorService, multi: true},
],
这是我的 messageService 类。
export class MessageService {
constructor(private toastr: ToastrService) { }
showSuccessWithTimeout(message, title, timespan) {
this.toastr.success(message, title , {
timeOut : timespan
});
}
showError(message, title) {
this.toastr.error(message, title, {
enableHtml : true
});
}
}
当请求超时或找不到后端服务器 url 或类似的服务器错误时,我如何向用户显示 Toast 消息?