在打字稿控制台应用程序中重用可注入服务

时间:2017-03-01 15:51:06

标签: javascript angular typescript

我有一个组件使用的可注射服务。

@Injectable()
export class SomeService {
    constructor(private http: Http){}
    ...
}

与此同时,我正在尝试在打字稿中编写一个实用程序应用程序(控制台应用程序来查看数据)。

class SomeConsoleApp{
    constructor(svc:SomeService){}
    ...
    run(){
      console.log('test');
   }
}

var svc = new SomeService(???);
var app = new SomeConsoleApp(svc);
app.run();

我的问题是,在初始化SomeService时如何初始化Http参数。 angular2 Http有两个参数 - ConnectionBackend和RequestOptions。有点像穷人的依赖注射。

1 个答案:

答案 0 :(得分:0)

如果要在Angular应用程序之外使用根注入器,则在引导模块时需要对其进行引用。

platformBrowserDynamic().bootstrapModule(AppModule).then((moduleRef: NgModuleRef<any>) => {
  someGlobalObject = moduleRef.injector;
});

然后,您可以使用注入器创建具有所有依赖项的新服务:

var svc = someGlobalObject.inject("SomeService");

注意:这只有在您的控制台应用程序和Angular应用程序在同一个执行上下文(同一页面)内运行时才有效。