注射剂和可注射物之间的区别?

时间:2016-06-27 17:48:59

标签: angular

我一直在处理我的新 Angular2 应用,并且在注射 Observables 之间感到困惑?

1 个答案:

答案 0 :(得分:4)

这两者在任何方面都没有关系。您可以像其他任何地方一样在Observables中使用Injectables,但这是关于它的。

Observable类似于其他语言中的Stream。 可以订阅Observable,当它发出事件时,会通知订阅者。 Observable有点像Promise但是对于一系列可能的值而不是一个值。

Injecable是一个可以由Angulars DI实例化并注入的类。 (依赖注入)。 当一个类有像

这样的装饰器时
@Injectable() 
export class SomeClass {
  constructor(private http:Http) {}
}

和其他一些类(例如Angular2组件)如

@Component({...}
export class MyComponent {
  constructor(private someClass:SomeClass) {}
}
由Angulars DI实例化的

,DI检查构造函数参数并查找与构造函数参数声明匹配的注入,创建一个新实例(在本例中为SomeClass),但因为SomeClass也是有一个构造函数参数,DI首先要查找或创建Http的新实例,以便能够将其传递给SomeClass

Injectable因此是一个可以通过DI实例化的类: