angular - 如何将数据从订阅存储/设置到外部变量并从Angular 7中的其他类再次读取
问题描述
我有一个返回一些数据的http响应,我想将该数据存储在外部变量中并从外部类再次读取,
myExternalVar: any
loadData(id: string) {
merge()
.pipe(
startWith({}),
switchMap(() => {
return this.myService!.getData(id);
}),
map(data => {
return data;
}),
catchError(() => {
return observableOf([]);
})
)
.subscribe(data => {
this.myExternalVar = data
});
}
所以,我尝试做的是从另一个类调用 myExternalVar
解决方案
数据服务.ts
import { BehaviorSubject, Observable } from 'rxjs';
private data$ = new BehaviorSubject<any>(null);
data: Observable<any> = this.data$.asObservable();
setData(newData: any){
this.data$.next(newData);
}
在您编写函数的班级中
constructor(...data service...) { }
loadData(id: string) {
merge()
.pipe(
startWith({}),
switchMap(() => {
return this.myService!.getData(id);
}),
map(data => {
return data;
}),
catchError(() => {
this.dataService.setData(observableOf([]));
return observableOf([]);
})
)
.subscribe(data => {
this.dataService.setData(data);
});
}
在您想访问 myExternalVar 的某个地方
constructor(...data service...) { }
this.dataService.data.subscribe(myExternalVar => {
... do something here...
});
推荐阅读
- c# - 如何在没有无限计算资源的程序中允许循环概念?
- c# - 如何在 Blazor (razor) 组件中打包图标
- javascript - RegExp 单词不应以其他单词的特定字符开头,仅查找双引号单词
- reactjs - 如何将动画值传递给导航标题组件?
- powerbi - Power BI - 为文本搜索引用列(使用通配符)
- android - 有没有办法从 sharedpreferences 中删除项目?
- ios - 如何在 iOS App Store 上部署 Vue Native 应用程序?
- azure-machine-learning-studio - Azure 机器学习在运行管道时抛出错误“无效图:节点中的计算目标无效”
- javascript - 是否可以在 next.js api 中运行 Mongoose?
- java - 在当前项目中找不到前缀“依赖”的插件