无法注入用useClass声明的角度提供程序



我有一个全局错误处理程序类

@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。如何避免这种双重实例化?

您想要注入ErrorHandlerServiceErrorHandler,并且在这两种情况下都想要注入相同的类(ErrorHandlerService(?

好吧,您的例子展示了如何为ErrorHandler而不是为ErrorHandlerService定义一个类。

因此,请尝试useExisting并在根目录中注入ErrorHandlerService

最新更新