【问题标题】:Angular subscribe to HTTPClient Observable, error req.url.toLowerCase is not a functionAngular 订阅 HTTPClient Observable,错误 req.url.toLowerCase is not a function
【发布时间】:2019-01-11 09:31:45
【问题描述】:

我正在使用服务从 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 ERROR 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)

如何才能正确检索数据?

【问题讨论】:

  • 请分享你的拦截器代码
  • 您找到解决方案了吗?我之前遇到了同样的错误。我没有正确添加 api url,我认为当请求字符串不正确/正确编写时会发生这种情况

标签: angular observable httpclient


【解决方案1】:

请试试这个并告诉我

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;}
        )
      }

【讨论】:

  • 谢谢,我查看了我的后端,我得到: localhost:6666/some/tra/la/la98321undefinedundefinedundefinedundefinedundefined... 所以看来可选参数被初始化为“未定义”,所以我替换了url 并设置默认值:“”,这似乎工作......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2018-05-09
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
相关资源
最近更新 更多