我有一个全局错误处理程序类
@Injectable()
export class ErrorHandlerService implements ErrorHandler {
// error stream others can subscribe to
errors$ = new Subject<ClientError>();
...
}
我用在app.module.ts
中注册
...
{provide: ErrorHandler, useClass: ErrorHandlerService},
...
现在,我想将错误处理程序注入到其他服务中,以便它们可以订阅errors$
,但我得到了Error: NullInjectorError: No provider for ErrorHandlerService!
。如果我在ErrorHandlerService中添加providedIn: root
,注入可以工作,但ErrorHandler被实例化了两次,这将导致问题,因为我突然有两个错误$stream。如何避免这种双重实例化?
您想要注入ErrorHandlerService
或ErrorHandler
,并且在这两种情况下都想要注入相同的类(ErrorHandlerService
(?
好吧,您的例子展示了如何为ErrorHandler
而不是为ErrorHandlerService
定义一个类。
因此,请尝试useExisting并在根目录中注入ErrorHandlerService
。