【问题标题】:push to observable variable in angular推到角度的可观察变量
【发布时间】:2019-03-24 18:49:43
【问题描述】:

如何将一个额外的对象添加到最初订阅模板中的 observable 的集合中。所以我的组件中有一个变量,它是一个可观察的,然后我做了一些 http 请求并将可观察的设置为这个服务请求,就像这样......

logs$: Observable<any>;

this.logs$ = this.service.getLogs(searchCriteria);

.. 然后在模板中我使用异步管道订阅这个 observable。

<div *ngIf="logs$ | async as logs; else loading">

加载此数据后,有一些功能可以添加新日志,然后我想将此新日志推送到集合中,以便在保存后显示。我可以向这个 observable 推送一个新值并重新订阅它,还是我需要在组件中手动订阅它并将集合放在那里,然后我可以在组件中推送它。提前致谢。

【问题讨论】:

  • 如果您将新值推送到 logs$,则无需重新订阅 observable
  • this.service.getLogs 是否可以返回 http 调用?如果是这样,那么您就不走运了,因为 http observable 在执行后会终止(除非您在其中使用 pipe share())

标签: angular rxjs


【解决方案1】:

this.service.getLogs 是否可以返回 http 调用?如果是这样,那么您就不走运了,因为 http observable 在执行后会终止(除非您在其中使用 pipe share())。

如果我是你,我会将日志作为单独的集合保存。在这种情况下,我可以随意修改该集合,它会在 UI 中反映出来,无需任何技巧。

我会做什么

this.logs:Array<Logs>; //declaration
this.service.getLogs(searchCriteria).subscribe(result=>logs=result); // execution in onInit

并按需添加日志

this.logs.push(newLog);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2020-05-11
    • 2017-04-20
    • 1970-01-01
    • 2018-10-15
    • 2021-02-22
    相关资源
    最近更新 更多