我试图在Angular2中使用行为主题和observable在一个数组中传入3个参数。
BehaviorSubject<Array<Something1>, Array<Something2>, Array<Something3>>
这似乎不起作用,因为行为主题只支持一个参数。有什么建议吗?
答案 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}}之间指定的任何类型。