【问题标题】:Add variables to a variable Observable <>将变量添加到变量 Observable <>
【发布时间】:2017-08-11 09:43:31
【问题描述】:

我有一个 Observable 变量:

messages: Observable<Message[]>;

我想向这个 Observable 变量添加变量。由于这是 Message: Message [] 的集合,因此我想在其中添加 Message 变量:

const newMessage = new Message(objMessage);

我不知道该怎么做,我试过了,但它不起作用,因为它是针对不可观察变量的:

newThread.messages = [newMessage];

或者这个:

newThread.messages.subscribe((message: Message) => {
  newThread.messages = message;
});

/////////////////////////////////////// ///////////////////////////////////////// ///////////////////////////////////////// /////////// 编辑

我在我的 thread.model.ts 中初始化我的变量消息:

messages: Observable<Message[]> = new Observable<Message[]>();

我在另一个服务 chat.service.ts 中初始化我的变量 newThread.messages :

newThread.messages.next(newMessage);

但它给了我这个错误:

Property 'next' does not exist on type 'Observable<Message[]>'

Plunker 链接:

https://plnkr.co/edit/aNzWu2ShO55bk3fRJ5ya?p=catalogue

/////////////////////////////////////// ///////////////////////////////////////// ///////////////////////////////////////// ///////// 编辑

我刚刚意识到它不能按我的意愿工作。 当有多个消息时,这不起作用。通过我所做的,第二条消息删除了第一条消息。虽然我希望变量 thread.messages 包含一堆消息。

所以我尝试使用 .next 方法,但这让我出错了。

export class Thread {
  id: string;
  messages: BehaviorSubject<Message[]>;
}

const newThread: Thread = new Thread(objMessage.id, [newUser],objMessage.title);
const newMessage = new Message(objMessage);
newThread.messages.next([newMessage]);


Cannot read property 'next' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'next' of undefined

或者这个:

private subject = new Subject<Message[]>();

this.subject.next([newMessage]);

thread.messages.subscribe((messages: Message[]) => {
   messages = this.subject.asObservable();
});

你知道为什么吗?

【问题讨论】:

  • 你可以使用Observable.of([newMessage]) 或者你可以使用.next 方法将数据推送到 Observable 流中。
  • @pankaj 我不能将 .next 与这种类型的变量一起使用:Observable
  • 因为你还没有声明 Observable,你应该在像 messages: Observable&lt;Message[]&gt; = new Observable&lt;Message[]&gt;() 那样将值推入之前初始化 observable
  • @pankaj 我已经编辑了我的帖子
  • newThread.messages = Observable.of([newMessage]); messages: Observable&lt;Message[]&gt;; 就这样:)

标签: angular typescript rxjs rxjs5


【解决方案1】:

使用 .next() 方法在 observable 流数据中添加数据,通过添加新的行为主体

【讨论】:

  • 最后还是不行。我重新发布了一个答案。我正在尝试使用 .next 方法
猜你喜欢
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多