我有一个名为UserProvider
的提供程序,它公开了一个Angular http observable,用于更新服务器上的用户,例如:
export class UserProvider = {
user: User;
update(params): Observable<User> {
return this.http.patch<User>(`${API_ENDPOINT}/users/this.user.id`, params);
}
}
现在,httppatch
请求返回服务器上更新的用户。我想在每次执行update()
可观察时将其分配给this.user
。
请注意,我并不是想在调用方更新用户。我想公开一个可观察的,它在订阅时会自动这样做。
您可以pipe
您的请求,并使用tap
运算符将响应分配给user
属性。这将形成一个链,您仍然可以订阅observable,但现在每次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));
}
}