angular - Angular HttpClient订阅问题
问题描述
我目前正在尝试在 http 请求之后在 Angular 中返回一个 Observable。以下是方法代码:
public fetchOptions(options ?: any): Observable<any> {
let response: Subject<Response> = new Subject<Response>();
if (!this._config) {
return null;
}
let requestOptions: any= null;
// fetch Token from oag and add the Authorisation Header
this.fetchToken().subscribe((token: IOagAccessTokenResponse) => {
let finalOptions: any= {};
if (options) {
finalOptions = options;
}
if (!finalOptions.headers) {
finalOptions.headers = new HttpHeaders();
}
// first remove Header and after this add the new header
finalOptions.headers = finalOptions.headers.delete('Authorization');
requestOptions = finalOptions;
}), (e): any=> {
};
response.next(requestOptions);
}
这是对该函数的订阅调用:
this.fetchOptions(options).subscribe((requestOptions: any) => {
.....
}
我在 Internet Explorer 和 Chrome 中不断收到以下错误:
错误类型错误:无法读取未定义的属性“订阅”
我究竟做错了什么?
解决方案
它不起作用,因为 fetchOptions 方法没有返回 Observable。实际上它不返回任何东西。
当您从 fetchOptions 方法返回 Observable 时,您将能够订阅它。
推荐阅读
- angular - 带手动触发的 FIFO 队列
- java - Bazel 和 java 类路径
- python-3.x - AttributeError:使用 celery 时对象没有属性“task_id”
- spring - 将 DelegatingSessionFactory 与 RemoteFileTemplate.execute(SessionCallback) 一起使用
- python - 有没有办法让 Discord Dadbot 稍后在消息中找到“我是”?
- vba - 如果我的参考数据(数据透视表)中不存在切片器项目,我如何跳过选择切片器项目
- flask - 渲染模板是从烧瓶或其他后端框架提供网页的最佳方式吗?
- acumatica - 如何使用 C# REST Web 服务从记录中获取附件
- tradingview-api - 如何删除 priceLine Tradingview 轻量级
- ios - 有没有办法模拟iOS操作系统在后台终止应用程序?