手动触发可观察?

时间:2017-02-21 04:47:52

标签: angular

我的服务包含一系列CRUD操作。其中一个是"得到所有"有点交易。所有返回HTTP observable都像:

  getUsers(): Observable<User[]> {
    return this.http.get(this.baseURL + '/api/users').map((response: Response) => response.json()).share();
  }

现在,我有一个组件使用异步管道订阅了该服务:

this.users = this.userService.getUsers();

<md-list-item *ngFor="let user of users | async;>

在另一个组件中,我想调用getUsers方法(因为它对数据执行了一些操作),并让其他组件自动更新。

this.service.getUsers()当然不起作用,因为它需要订阅。

有什么方法可以订阅/观察永久性的吗?我错过了什么吗?

我经常做一些事情,其中​​组件直接订阅服务中的主题,我手动更新它。但是想知道是否有一些奇特的混淆方式。

1 个答案:

答案 0 :(得分:2)

在从HTTP调用创建的observable的情况下,如果订阅两次,则相应的请求将被调用两次)默认情况下,这样的observable是冷的(它们不能被共享)。

您可以使用share方法让您的观察性变得热烈:

import 'rxjs/add/operator/share';

this.users$ = this.userService.getUsers().share();