Angular 将服务注入依赖于上下文的组件

Angular 将服务注入依赖于上下文的组件,angular,angular-providers,Angular,Angular Providers,我有这样的结构 @Injectable() export class A extends B ... @Injectable() export class C extends B ... @Component({}) constructor( @Inject(SERVICE) public data // How to inject component ) { } 我必须动态地将服务A或C注入组件试试这个角度反射射入器 这将有助于动态获取服务 注意:已弃用:从v5开始

我有这样的结构

@Injectable()
export class A extends B ...

@Injectable()
export class C extends B ...

@Component({})
 constructor(
      @Inject(SERVICE) public data // How to inject component
  ) {
  }

我必须动态地将服务A或C注入组件

试试这个角度反射射入器

这将有助于动态获取服务

注意:已弃用:从v5开始-速度慢且引入大量代码,请使用
注入器。请改为创建

喷油器是新操作员的替代品,它可以自动解决构造器依赖关系

在典型使用中,应用程序代码要求在 构造函数,它们由注入器解析

尝试新的
喷油器

import { Injector } from '@angular/core';

const injector = Injector.create([
  {
    provide: ASerive,
    useClass: ASerive,
    deps: [specify if any dependency]
  }
]);
const gotMySerive = injector.get(ASerive);
根据需要更改“创建数据”选项

我想注入一个扩展
B

在这种情况下,只需指定类型。这可以从参数类型推断,也可以显式定义为中的参数


在注入服务之前,您希望检查什么条件?我不希望检查任何条件如果我理解正确,您希望基于某些上下文注入服务。背景是什么。若并没有上下文,为什么不同时注入这两个服务呢?你们可以简单地在构造函数中定义一个服务。您不必通过InjectMethod注入它。您可以更具体地回答您的问题吗?这被标记为不推荐。什么是不推荐的方法来实现这一点?不推荐:从v5开始-速度慢并且引入了大量代码,请改用Injector.create,编辑答案
constructor(private myService: C) { } 
constructor(@Inject(C) private myService: B) { }