是否可以检索任何@Injectable
之类的内容:
var config = @Inject(Config);
由于
答案 0 :(得分:1)
如果您想从依赖注入中获取新实例,则需要引用Injector,然后您可以使用
获取新实例injector.get(Config);
如何获取Injector
的引用取决于代码的位置
在Angular组件或服务中,只需注入它
constructor(private injector:Injector) {}
您也可以像
一样创建自己的注射器var injector = Injector.resolveAndCreate([Car, Engine]);
其中Car
和Engine
是注入者可以为其创建实例的提供者。
要使Angular应用程序的注入器在Angular应用程序之外使用,您可以使用
来自https://github.com/angular/angular/issues/4112#issuecomment-153811572
的示例let appInjectorRef: Injector;
export const appInjector = (injector?: Injector):Injector => {
if (injector) {
appInjectorRef = injector;
}
return appInjectorRef;
};
bootstrap(App, [
Auth,
HTTP_PROVIDERS,
ROUTER_PROVIDERS,
Car,
Engine
]).then((appRef: ComponentRef) => {
// store a reference to the application injector
appInjector(appRef.injector);
});
let injector: Injector = appInjector();
injector.get(Car);
答案 1 :(得分:1)
我发现将injector
声明为全局变量更容易,因此我可以更轻松地使用它。
在你引导角度的文件中:
declare global {
var injector: Injector;
}
bootstrap(/* your bootstrap stuff */).then((appRef) => {
injector = appRef.injector;
});
通过以上操作,您可以访问代码中其他任何位置的injector
变量。
在您需要Config
的实例的文件中:
import { Config } from './path/to/config.service';
class TestClass {
private config: Config;
constructor() {
this.config = injector.get(Config);
}
}