BehaviorSubject为Angular 2

时间:2017-08-01 06:18:11

标签: angular observable behaviorsubject

我试图在Angular2中使用行为主题和observable在一个数组中传入3个参数。

BehaviorSubject<Array<Something1>, Array<Something2>, Array<Something3>> 

这似乎不起作用,因为行为主题只支持一个参数。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以传递数组数组。只需用[];

包围它
BehaviorSubject<[Array<Something1>, Array<Something2>, Array<Something3>]>  

答案 1 :(得分:2)

当你这样写:

BehaviorSubject<Array<Something1>, Array<Something2>, Array<Something3>> 

您没有传递任何参数。您只是指定此主题将发布的类型。要指定它可以生成三种不同类型的项目,请使用| class T1 {} class T2 {} class T3 {} const o = [new T1()]; const s = new BehaviorSubject<Array<T1> | Array<T2> | Array<T3>>(o); 运算符:

BehaviorSubject

此外,BehaviorSubject取一个值。以下是说明union type

  

主题的变体之一是BehaviorSubject,它有一个   &#34;当前价值&#34;的概念。它存储发出的最新值   它的消费者,每当新的Observer订阅时,它都会   立即收到&#34;当前值&#34;来自BehaviorSubject。

因此,当您实例化<...>时,您必须通过那个&#34;当前&#34;值。这就是为什么只有一个参数是预期的,因为只有一个&#34;当前&#34;值。此值可以是您在实例化主题时在{{1}}之间指定的任何类型。