我有一个名为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()
。
请注意,我并不是要在调用方方面更新用户。我想公开一个可观察的对象,它在订阅时会自动执行。
答案 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));
}
}