Angular 订阅 HTTPClient Observable,报错 req.url.toLowerCase is not a function

问题描述 投票:0回答:2

我正在使用一项服务从 url 检索数据,我正在另一个组件中使用该服务在前端显示数据...

我的服务:

getHttpData(baseurl, prefix?, suffix?, startTime?, endTime?, demo_id?)  {
    return this.http.get(baseurl+ prefix + suffix+ startTime + endTime + demo_id).map(
      (res: Response) => {return this.data = res;}
    )
  }

我使用该服务的组件:

ngOnInit() {
baseurl: 'http://localhost:6666/some/tra/la/la98321'; 

    this.data = this.genHttp.getHttpData(this.baseurl).subscribe(result => {
      this.data = result;
      console.log('Daten:',this.data);
    });

  }

但是我在控制台中收到以下错误:

core.js:1633 错误 TypeError: req.url.toLowerCase 不是函数 在 HttpXsrfInterceptor.push../node_modules/@angular/common/fesm5/http.js.HttpXsrfInterceptor.intercept (http.js:2027) 在 HttpInterceptorHandler.push../node_modules/@angular/common/fesm5/http.js.HttpInterceptorHandler.handle (http.js:1407) 在 HttpInterceptingHandler.push../node_modules/@angular/common/fesm5/http.js.HttpInterceptingHandler.handle (http.js:2080) 在 MergeMapSubscriber.project (http.js:1158) 在 MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._tryNext (mergeMap.js:117) 在 MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._next (mergeMap.js:107) 在 MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next (订阅者.js:93) 在 Observable._subscribe (scalar.js:5) 在 Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable._trySubscribe (Observable.js:176) 在 Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe (Observable.js:161)

我该如何做才能检索数据而不出现错误?

angular observable httpclient
2个回答
0
投票

请尝试一下并告诉我

getHttpData(baseurl, prefix?, suffix?, startTime?, endTime?, demo_id?)  {
        const url= baseurl+ prefix + suffix+ startTime + endTime + demo_id+'';
        return this.http.get(url).map(
          (res: Response) => {return this.data = res;}
        )
      }

0
投票

对于我们来说,我们尝试使用非字符串的值调用 httpClient.post。

return this.httpClient.post(URL, formData, { withCredentials: true }).pipe(
    switchMap((presignedUrl: string) => this.httpClient.put(presignedUrl, file, { reportProgress: true, observe: 'events' }))
);

其中 presignedUrl 是一个对象

{ url: '...' }
。这很难从堆栈跟踪中诊断出来。

© www.soinside.com 2019 - 2024. All rights reserved.