我有一个ErrorHandler
,我用它来记录所有异常&然后重定向用户到一般错误页面。问题是,这是否仅是处理的异常出现任何lifecycle hooks(或构造函数)以外的工作。方法。考虑以下示例与ngOnInit
:router.navigate不起作用
class MyErrorHandler implements ErrorHandler {
constructor(private injector: Injector) { }
handleError(error) {
// log error
var router = this.injector.get(Router);
router.navigate['/error'];
}
}
正确调用错误处理程序。但是,只有在组件初始化发生异常时,router.navigate才起作用。
不起作用:
import { Component, OnInit} from '@angular/core';
@Component({
template: ''
})
export class SampleComponent implements OnInit{
ngOnInit() {
throw Error(`Boom!`);
}
}
按预期工作:
import { Component, OnInit} from '@angular/core';
@Component({
template: `<button (click)="handleClick()">click me</button>`
})
export class SampleComponent{
private handleClick(): void{
throw Error(`Boom!`);
}
}
我缺少的东西或我怎样才能使这项工作?我想我可以使用windows.location.href
,但那会重新加载页面,这是我宁愿避免的。
我有同样的问题,但在constuctor引发错误(){}导航预期。 – jonas