Angular 4申请。
我正在尝试创建一个错误页面,以显示有关可能发生的未处理异常的一些信息。 <div pTooltip="Please upload" style="display:inline-block;" tooltipPosition="top"
tooltipDisabled = "flag">
<button class="btn btn-primary btn-xs"><i class="fa fa-check"
aria-hidden="true"></i></button>
</div>
拦截最终错误,并将用户重定向到由单个GlobalErrorHandler
组成的页面。发生错误时会显示页面,但不会调用生命周期挂钩。
ErrorHandler :
ErrorComponent
错误成分:
@Injectable()
export class GlobalErrorHandler extends ErrorHandler {
constructor(
private injector: Injector
) {
// The true paramter tells Angular to rethrow exceptions, so operations like 'bootstrap' will result in an error
// when an error happens. If we do not rethrow, bootstrap will always succeed.
super(true);
}
handleError(error: any) {
const router = this.injector.get(Router);
if (!router.url.startsWith('/error')) {
router.navigate(['/error']);
}
super.handleError(error);
}
}
plunkr上的工作演示。
我如何解决这个问题?也许有人知道解决方法? 感谢
答案 0 :(得分:6)
找到this github issue后。您似乎只需在角度区域内运行router.navigate(...)
代码即可启动并运行重定向:
ErrorHandler:
@Injectable()
export class GlobalErrorHandler extends ErrorHandler {
constructor(private injector: Injector private zone: NgZone) {
super();
}
handleError(error: any) {
const router = this.injector.get(Router);
super.handleError(error);
if (!router.url.startsWith('/error')) {
this.zone.run(()=>router.navigate(['/error']));
}
}
}