首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新嵌套的可观测ain角9?

如何更新嵌套的可观测ain角9?
EN

Stack Overflow用户
提问于 2020-10-12 10:45:59
回答 1查看 55关注 0票数 0

我有一个可观察的,我想修改。

代码语言:javascript
复制
private userProposalConversatorAfterLogin = new BehaviorSubject<any>([]);
    getUserProposalConversatorAfterLogin$ = this.userProposalConversatorAfterLogin.asObservable();
    currentUserProposalConversatorAfterLoginValue():ParcelModel[] {
      return this.userProposalConversatorAfterLogin.value;
    }
    setUserProposalConversatorAfterLogin(x) {
      this.userProposalConversatorAfterLogin.next(x);
    }

以下是订阅(this.getUserProposalConversatorAfterLogin$.suscribe(proposal))的结果

代码语言:javascript
复制
{
id:1,
messages:[{id:'1', comments:'hello'}, {id=2, comments:'aaa'}, .....]
}

我想向消息数组中添加一条新消息,例如:{id=3,注释:‘oooo’},当我再次订阅时,我想获得:

代码语言:javascript
复制
  {
    id:1,
    messages:[{id:'1', comments:'hello'}, {id=2, comments:'aaa'},  {id=3, comments:'oooo'} .....]
    }

我尝试了很多方法,但都没有成功。

代码语言:javascript
复制
getUserProposalConversatorAfterLogin$.pipe(
    switchMap(x => {
      const new_array = (x.filter(x => x['id'] === proposal_identifiant))
      console.log(new_array);
      if (new_array && new_array.length >=1) {
        new_array[0]['message_proposal_identifiant'].push(new_message);
        console.log(new_array[0]['message_proposal_identifiant']);
        
      }
      return new_array

      }),
    share(),
    distinctUntilChanged(),
  )

当我再次订阅时,我看不到新的价值。我认为我们需要修改userProposalConversatorAfterLogin,但是如何修改呢?

我试过使用this.userProposalConversatorAfterLogin.next(val),但它只添加了一个新对象--谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-12 11:04:33

在使用BehaviorSubject时,可以对其调用getValue(),这将为您提供当前值。并将当前值存储在变量中。

Ex:

代码语言:javascript
复制
const currentValue = this.userProposalConversatorAfterLogin.getValue(); 

// In your case current value is an array, so you can do below

currentValue.push( {id=3, comments:'oooo'} ); 

// and then call .next() with updated current value

this.userProposalConversatorAfterLogin.next( currentValue );

所以你会得到这三个对象

工作斯塔克布利茨

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64316316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档