angular - 更新 API 请求的可观察值
问题描述
我正在使用 observable 从 API 发出值。现在在其订阅的组件中,我想更新某个事件的可观察值。
我无法理解如何去做。
下面是服务类中的代码
cacheSettingsData$: Observable<any>;
public getUserSettings() {
if (!this.cacheSettingsData$) {
this.cacheSettingsData$.next(this.requestUserSettings());
this.userSettings = this.cacheSettingsData$;
}
return this.cacheSettingsData$;
}
requestUserSettings 执行 API 调用并返回值
requestUserSettings(): Observable<any> {
let httpHeader = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
return this.http.get(userSettUrl, httpHeader).pipe(
map((response) => Object(response['settings'])),
catchError(error => this.handleError(error)), shareReplay()
);
现在在订阅 了getUserSettings的组件中,我如何在某些事件(例如单击按钮时)上更新可观察的cacheSettingsData$的值?
请指导!
谢谢施鲁蒂奈尔
解决方案
如果我正确理解了这一点,您希望存储this.userSettings
由requestUserSettings()
. 当您requestUserSettings()
返回一个流并且您希望将这些值输入cacheSettingsData$
到然后将这些值设置为this.useSettings
. 我认为您甚至不需要 this.cacheSettingsData$ 因为看起来您只想加载一次用户设置并将其缓存在this.userSettings
. 所以我会建议这样的事情
// in this case this method name is not the best
public getUserSettings() {
if (!this.userSettings) {
this.requestUserSettings().subscribe(settings => {
this.userSettings = settings
})
}
}
当然,我不知道您的项目背景,所以由您来考虑什么更适合您的要求。
推荐阅读
- asp.net-mvc - 不同用户的相同 api 端点,例如 asp.net mvc / asp.net core mvc 中的用户和管理员
- reactjs - 修复了 React 导航栏
- purescript - 了解 Purescript 类型不匹配编译器错误
- node.js - 连接到 MongoDB Atlas
- angular - Ionic 打开 PDF/VIDEO/IMAGE 并将其转换为 base64
- node.js - 将新项目添加到实时数据库数组
- c++ - ActiveMQ CMS 故障转移机制不起作用
- java - 在 Spring Security 中显示自定义错误消息?
- mongodb - 值不为空的MongoDB平均值
- griddb - 如何在 GridDB 中备份文档