中的数组,我们可能有一个不寻常的angular2体系结构,我们在单个页面上引导多个组件(小部件),而不是处理所有内容的单个应用程序组件。Angular2 Bootstrap Providers vs首先提供组件
我的第一个问题是,以下两种实现方式是否相同,从我的理解,他们是(请纠正我,如果我误解的东西):
bootstrap(SomeComponent, [HTTP_PROVIDER, FooService, ServiceNeededByFoo])
这初始化SomeComponent并提出了提供者那里的三项服务。这样SomeComponent就可以在它自己的构造函数中解析FooService,并且FooService可以解析ServiceNeededByFoo,因为它在SomeComponent(父类)中查找它。从我的理解这应该是完全一样的,FooService接口和ServiceNeededByFoo一个新的实例
bootstrap(SomeComponent)
所以:
如果我定义
providers: [HTTP_PROVIDER, FooService, ServiceNeededByFoo]
内SomeComponent,我可以像这样初始化在SomeComponent级别创建并与SomeComponent的所有子节点共享,这些子节点也需要FooService。如果相同,是否有任何优先/推荐的方式?
第二个问题就是现在,我怎么可以在不在同一个层次DI组件共享FooService接口的单一实例:
bootstrap(SomeComponent1, FooService)
bootstrap(SomeComponent2, FooService)
其中FooService接口应该是相同的实例。喜欢的东西:
var foo = new FooService();
foo.expensiveInit();
bootstrap(SomeComponent1, provide(FooService, {instance: foo}))
bootstrap(SomeComponent2, provide(FooService, {instance: foo}))
提供mehods和Provider类现在是rc3的depricates,我还没有找到替换,因为代码中的注释简单地说“TODO:improve docs” – Tom