无法注入使用 useClass 声明的 angular 提供程序

Cant inject angular provider declared with useClass

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

@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 被实例化两次,这将导致问题,因为我突然有两个 errors$ 流。我怎样才能避免这种双重实例化?

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

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

所以尝试使用现有的并在 root 中注入 ErrorHandlerService