我在Angular 5中有一个场景,我需要根据每个类中定义的错误处理程序重定向页面。 这些是我的错误类。
export class AppError {
constructor(
public originalError?: any,
executeParent?: boolean
) {
if (executeParent) {
console.log(originalError);
}
}
}
export class NotFoundError extends AppError {
constructor(originalError) {
super(originalError);
console.log(this);
}
}
我在这样的服务中使用它们:
@Injectable()
export class AccountService {
account: Account;
constructor(private http: HttpClient) {}
fetch () {
return this.http.get(ENDPOINT.ACCOUNT).catch((error: Response) => {
if (error.status === 404) {
return Observable.throw(new NotFoundError(error));
}
return Observable.throw(new AppError(error));
});
}
}
现在我需要做这样的事情
export class AppError {
private router: Router;
private store: StoreService;
constructor(
public originalError?: any,
executeParent?: boolean
) {
if (executeParent) {
if (this.store.errorMessage.getValue().code) {
log.print('ErrorCode: ', this.store.errorMessage.getValue().code);
this.router.navigate(['/errorPage']);
}
console.log(originalError);
}
}
}
但它没有让我,因为路由器和商店没有定义。我无法定义新实例,因为我需要对商店的引用。
我不想在构造函数中使用它,因为我必须从这么多较低级别传递此值。我想保持我的班级签名简单直接。因为我需要在这里添加更多类型的错误,我无法在如此长的层次结构中传递存储和路由器。