gpt4 book ai didi

javascript - Angular 6 错误处理不显示 toast

转载 作者:行者123 更新时间:2023-12-03 00:41:34 25 4
gpt4 key购买 nike

我正在使用下面的代码来捕获我的小型 Angular 6 应用程序中的错误...我正在捕获错误,我正在控制台中显示信息,问题是除非我单击应用程序中的某个位置,否则 toast 不会显示,它们不会单独出现。我在应用程序的其他部分使用 ToastrService ,每当我像在这里那样调用它时,它都会显示 toats,而无需单击任何内容。

知道什么可能导致这种行为吗?

import { Injectable, ErrorHandler, Injector } from '@angular/core';
import { Router } from '@angular/router';
import { HttpErrorResponse } from '@angular/common/http';
import { ToastrService } from 'ngx-toastr';
import { AppSettings } from '../../app.settings';

@Injectable()
export class GlobalErrorHandler implements ErrorHandler {

constructor(private injector: Injector) {}

public handleError(error: any) {

const router = this.injector.get(Router);
const settings = this.injector.get(AppSettings)

const toastr = this.injector.get(ToastrService);

console.log(`Request URL: ${router.url}`);
console.log(error);
if (error instanceof HttpErrorResponse) {
console.log("it is");
if (error.status === 401) {
router.navigate(['/login']);
settings.settings.setLoadingSpinner(false);
toastr.error('Logged in user no longer authenticated on server.', 'Unable to connect to server');
} else if (error.status === 404) {
console.log("it is 404");
toastr.error('Unable to connect to server. Missing or wrong URL, please try again', 'Unable to connect to server');
settings.settings.setLoadingSpinner(false);
} else if (error.status === 0) {
toastr.error('Server appears to be temporary unavailable', 'Unable to connect to server');
settings.settings.setLoadingSpinner(false);
} else if (error.status === 500) {
toastr.error('Server appears to be temporary unavailable', 'Unable to connect to server');
settings.settings.setLoadingSpinner(false);
}

} else {
console.error(error);
toastr.error('An error has occured', 'Sorry');

}

}

}

我在模块中添加了提供程序,也可以使用此类作为错误处理程序。

最佳答案

我相信您可以在构造函数中导入并包含 NgZone 以使此功能按预期工作:

constructor(private injector: Injector, private zone: NgZone) {}

然后包装您的 toastr 调用:

this.zone.run(() => toastr.error('message', 'title'));

关于javascript - Angular 6 错误处理不显示 toast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53442661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com