无法注入使用 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$ 流。我怎样才能避免这种双重实例化?
您想注入 ErrorHandlerService
或 ErrorHandler
并且在这两种情况下您想要注入相同的 class (ErrorHandlerService
)?
好吧,您的示例展示了如何为 ErrorHandler
而不是 ErrorHandlerService
定义 class。
所以尝试使用现有的并在 root 中注入 ErrorHandlerService
。
我有一个全局错误处理程序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$ 流。我怎样才能避免这种双重实例化?
您想注入 ErrorHandlerService
或 ErrorHandler
并且在这两种情况下您想要注入相同的 class (ErrorHandlerService
)?
好吧,您的示例展示了如何为 ErrorHandler
而不是 ErrorHandlerService
定义 class。
所以尝试使用现有的并在 root 中注入 ErrorHandlerService
。