我一直在处理我的新 Angular2 应用,并且在注射和 Observables 之间感到困惑?
答案 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实例化的类: