1

我正在尝试使用 Angular2 中的行为主体和可观察对象在一个数组中传递 3 个参数。

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

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

4

2 回答 2

3

您可以传递一个数组数组。只需用 [] 包围它;

BehaviorSubject<[Array<Something1>, Array<Something2>, Array<Something3>]>  
于 2017-08-01T06:27:32.693 回答
3

当你这样写时:

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取一个值。这是文档中的描述:

Subjects 的变体之一是 BehaviorSubject,它具有“当前值”的概念。它存储发送给其消费者的最新值,并且每当有新的观察者订阅时,它将立即从 BehaviorSubject 接收“当前值”。

因此,当您实例化 a 时,BehaviorSubject您必须传递那个“当前”值。这就是为什么只需要一个参数的原因,因为只有一个“当前”值。并且此值可以是您<...>在实例化主题时指定的任何类型。

于 2017-08-01T06:31:36.543 回答