Typescript Angular 2-如何将依赖项注入非组件且非';t作为服务暴露在外

Typescript Angular 2-如何将依赖项注入非组件且非';t作为服务暴露在外,typescript,angular,Typescript,Angular,我们正在开发用TypeScript和Angular 2编写的相当大规模的应用程序,我在理解如何以自定义方式使用Angular 2注入器时遇到了一个主要问题。事实上,我不确定我是否在尝试做一些框架不打算做的事情,但到目前为止,我只找到了一些不好的解决方案来解决我试图做的事情 所以,我试图实现的是将Injector中的值应用到不包含@Component行为的类,这些类不作为服务公开给Injector,映射到全局或组件级别的Injector。 (我认为我非常了解如何在这两个范围内注入内容,而且效果很好

我们正在开发用TypeScript和Angular 2编写的相当大规模的应用程序,我在理解如何以自定义方式使用Angular 2注入器时遇到了一个主要问题。事实上,我不确定我是否在尝试做一些框架不打算做的事情,但到目前为止,我只找到了一些不好的解决方案来解决我试图做的事情

所以,我试图实现的是将Injector中的值应用到不包含@Component行为的类,这些类不作为服务公开给Injector,映射到全局或组件级别的Injector。 (我认为我非常了解如何在这两个范围内注入内容,而且效果很好)

我想说的是这样的:

export class SomeCustomClass {
    constructor(injection:InjectionToken) {
        console.log('injection', injection);
    }
}
我知道,如果我将这个类添加到引导程序中的注入器中,或者作为@component decorator的一部分,这将很好地工作。问题是这不是我打算做的

我需要的是:

factory.createInstanceWithInjectionApplied(SomeCustomClass);
事实上,我可以接受简单的:

var instance:SomeCustomClass = new SomeCustomClass();
但这似乎并不现实

哦,是的,我已经尝试了我所能想到的一切-@Injectable()在这样创建的实例上什么都不做,Injector.createAndResolve似乎也不起作用,并且保持对应用程序Injector的访问的某种静态属性似乎也不是一个好主意

提前谢谢

您是否尝试使用该类

以下是一个示例:

var injector = Injector.resolveAndCreate([Car, Engine]);
var car = injector.get(Car);
还有一个:

export class SomeCustomClass {
  constructor(injector:Injector) {
    (...)
  }
}

这将创建一个全新的注入器,而无需参考父注入器,父注入器可以并且实际上正在自我注入,但不是在main
injector
var injector=appInjector.resolveAndCreateChild([SomeCustomClass])中已经定义的东西;获取(SomeCustomClass))起作用。此外,这还需要对应用注入器的现有引用,这实际上是应用注入器的注入值的必然条件。谢谢,我想我现在明白了!您可以在引导级别获取应用程序注入器的实例:
bootstrap(AppComponent)。然后((componentRef)=>{console.log(componentRef.injector);})。然后你需要找到一种方法,在你想使用它的地方提供它……我知道。唯一的问题是,这种方法将导致一种制动模块化。但我会想办法的。是的,我同意你的意见!你已经找到解决办法了吗?