0
您好,我在Angular的自定义异常处理程序中添加了一个路径导航,但我遇到的问题是,在Angular组件的onInit上触发错误时,它会进入错误循环:在自定义错误处理程序中使用router.navigate时出错
错误:无法激活已激活的出口
这是我的组件代码:
import { ErrorHandler, Injectable, Injector } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
@Injectable()
export class ErrorService implements ErrorHandler {
constructor(
private injector: Injector
) { }
get router(): Router {
return this.injector.get(Router);
};
handleError(error: any): void {
console.error(error);
this.router.navigate(['error', { error: error }], { skipLocationChange: true});
}
}
而这些我的路线:
export const routes: Routes = [
{ path: '', redirectTo: 'browser', pathMatch: 'full' },
{ path: 'browser', loadChildren: './modules/browserui#BrowserUiModule' },
{ path: 'error', component: ErrorComponent, data: { title: 'Generic error' } },
{ path: '**', component: ErrorComponent, data: { title: '404 not found' } }
];
任何想法?谢谢!
你所说的“当上触发OnInit的错误”是什么意思?什么组件触发了哪种错误? –
这里是一个例子:if(undefined === this.items)抛出新的错误('Attribute items is required'); }。在组件的OnInit中,我们控制Inputs的值为 –
我遇到了同样的问题,在OnInit中抛出的错误不会作为无法取消订阅订阅者的组件(第三方)进行路由...您是否找到解决方案对这个问题? – jonas