首页 > 解决方案 > 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 中不断收到以下错误:

错误类型错误:无法读取未定义的属性“订阅”

我究竟做错了什么?

标签: angularangular-httpclient

解决方案


它不起作用,因为 fetchOptions 方法没有返回 Observable。实际上它不返回任何东西。

当您从 fetchOptions 方法返回 Observable 时,您将能够订阅它。


推荐阅读