我有一个返回一些数据的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
答案 0 :(得分:0)
创建一个服务类,并在预订块中使用返回的数据设置服务类变量的值,以便您需要将服务类注入自定义类中以获取数据。
答案 1 :(得分:0)
data.service.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...
});