我在Bootstrap中定义了@Injectable服务.我希望在不使用构造函数注入的情况下获得服务的实例.我try 使用ReflectiveInjector.resolveAndCreate,但这似乎创建了一个新实例.

我try 这样做的原因是我有一个由许多组件派生的基本组件.现在我需要访问服务,但我不想将其添加到ctor,因为我不想在所有派生组件上注入该服务.

TLDR:我需要ServiceLocator.GetInstance<T>()

UPDATE: RC5+的更新代码:Storing injector instance for use in components

推荐答案

是的,ReflectiveInjector.resolveAndCreate()将创建一个新的、未连接的注入器实例.

您可以注入Angulars Injector实例,并使用

constructor(private injector:Injector) {
  injector.get(MyService);
}

您还可以将Injector存储在某个全局变量中,然后使用该注入器实例获取提供的实例,例如https://github.com/angular/angular/issues/4112#issuecomment-153811572中解释的实例

Angular相关问答推荐

我希望在下一次有Angular 的HTTPS呼叫之前完成一次

如何在Angular应用程序部署中安全地管理环境变量

not getting circular input switch primeng组件

在Angular 多选下拉菜单中实现CDK拖放排序的问题

显示用户名-Angular

为什么初始化值为 1 的BehaviorSubject 不能分配给类型number?

区分material 手风琴

Angular Signals 如何影响 RXJS Observables 以及在这种情况下变化检测会发生什么

完成行为主体

在生产模式下使用带Angular 的 livekit

错误:在@angular/core中找不到导出ɵivyEnabled(导入为ɵivyEnabled)

手动关闭 SSE 连接:Angular

显示 1 个数据而不是所有 ngFor - Angular 11

如何在 Angular 2 模板中使用枚举

如何在angular 5 中获取基本网址?

无法绑定到matMenuTriggerFor,因为它不是 button的已知属性

Angular 6在输入键上添加输入

unexpected token < 错误

Angular 2 更改事件 - 模型更改

Angular2动态改变CSS属性