我们在这里使用TypeScript和Angular 2编写的相当大规模的应用程序,我有一个主要问题,了解如何以自定义方式使用Angular 2注入器.实际上我不确定我是不是想尝试做一些不是框架意图的事情,但到目前为止,我发现只有不好的解决办法才能做到...
所以,我想要做到的,是从喷油器适用值,未纳入@Component行为,并且不暴露喷油器的服务,映射到全球或组件级别注射器类.(我想我很清楚如何在这两个范围中注入东西并且工作得很好).
我正在尝试的是这样的事情:
export class SomeCustomClass {
constructor(injection:InjectionToken) {
console.log('injection', injection);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道如果我将这个类添加到bootstrap中的注入器中,或者作为@component装饰器的一部分,它会很好用.问题是,这不是我打算做的.
我需要的是:
factory.createInstanceWithInjectionApplied(SomeCustomClass);
Run Code Online (Sandbox Code Playgroud)
我实际上可以忍受简单:
var instance:SomeCustomClass = new SomeCustomClass();
Run Code Online (Sandbox Code Playgroud)
但这似乎并不现实.
哦,是的,我已经尝试了我能想到的一切 - @Injectable()对这样创建的实例什么都不做,Injector.createAndResolve似乎也不起作用并保持一定的静态属性,可以访问应用程序Injector不看起来也是一个好主意.
提前致谢!