Angular 4 应用程序。
我正在尝试制作一个错误页面,以显示有关可能发生的未处理异常的一些信息。拦截最终错误并将用户重定向到由GlobalErrorHandler
单个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);
}
}
错误组件:
@Component({
selector: 'error-desc',
template: '<h1>Error page = {{code}}</h1>'
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ErrorComponent implements OnInit {
public code: string = '';
constructor(
) {}
ngOnInit() {
// not called
this.code="AAAA";
console.log("OnInit");
}
ngOnDestroy() {
console.log("OnDestroy");
}
}
plunkr上的工作演示。
我该如何解决这个问题?也许有人知道解决方法?谢谢