Angular提供了一个可观察到的东西,只要它被调用

时间:2018-08-04 05:54:52

标签: angular typescript rxjs observable

我有一个名为UserProvider的提供程序,它提供了一个可观察到的Angular http,它可更新服务器上的用户,例如:

export class UserProvider = {
  user: User;

  update(params): Observable<User> {
    return this.http.patch<User>(`${API_ENDPOINT}/users/this.user.id`, params);
  }
}

现在,http patch请求将返回服务器上的更新用户。我想每次执行this.user观察值时将其分配给update()

请注意,我并不是要在调用方方面更新用户。我想公开一个可观察的对象,它在订阅时会自动执行。

1 个答案:

答案 0 :(得分:1)

您可以pipe进行请求,并使用tap运算符将响应分配给user属性。这样将形成一条链,您仍然可以订阅可观察的对象,但是现在每次this.user = response将被执行。

import { tap } from 'rxjs/operators';

export class UserProvider = {
  user: User;

  update(params): Observable<User> {
    return this.http.patch<User>(`${API_ENDPOINT}/users/this.user.id`, params)
                    .pipe(tap(response => this.user = response));
  }
}