无法在Angular Service方法调用上读取null的属性'length'吗?

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

我正在修改现有的Angular项目(不是我的),向我的外部API添加新的调用。

这是服务方法:

getUserName(): Observable<any> {
    return this.http.get<any>(environment.apiUrl + URLS.USER_NAME)
}

而且我在appcomponent.ts上按如下方式使用它:

this.userService.getUserName().subscribe((name) => { 
  this.user = name
})

[执行时出现以下错误:

core.js:1673错误,类型错误:无法读取属性'length'为null的属性HttpHeaders。push ../ node_modules/@angular/common/fesm5/http.js.HttpHeaders.applyUpdate中(http.js:199)在http.js:170在Array.forEach()在HttpHeaders.push ../ node_modules/@angular/common/fesm5/http.js.HttpHeaders.init中(http.js:170)在HttpHeaders.push ../ node_modules/@angular/common/fesm5/http.js.HttpHeaders.forEach中(http.js:235)在Observable._subscribe(http.js:1435)在Observable.push ../ node_modules / rxjs / _esm5 / internal / Observable.js.Observable._trySubscribe中(Observable.js:43)在Observable.push ../ node_modules / rxjs / _esm5 / internal / Observable.js.Observable.subscribe(Observable.js:29)在MapOperator.push ../ node_modules / rxjs / _esm5 / internal / operators / map.js.MapOperator.call中(map.js:18)在Observable.push ../ node_modules / rxjs / _esm5 / internal / Observable.js.Observable.subscribe(Observable.js:24)

这似乎是标题问题或某些订阅/可观察到的错误,但我找不到错误在哪里。

  • 我的代码有问题吗?
  • 它可能是正在修改请求的现有拦截器?

请注意,在发出请求之前会引发异常,因此在创建该请求时必须是客户端问题。

编辑:

这是我发现的唯一拦截器:

@Injectable({
  providedIn: 'root'
})
export class TenantHttpInterceptor implements HttpInterceptor {

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    if (req.url.indexOf(environment.apiTFSmin) === -1) {
      let tenantReq = req.clone({ headers: req.headers.set('current', sessionStorage.getItem('current')) })
      if (sessionStorage.getItem('tenant') != null && sessionStorage.getItem('newTenant') == null) {
        tenantReq = tenantReq.clone({ headers: tenantReq.headers.append('Tenant', sessionStorage.getItem('tenant')) })
      } else if (sessionStorage.getItem('newTenant') != null) {
        tenantReq = tenantReq.clone({ headers: tenantReq.headers.append('Tenant', sessionStorage.getItem('newTenant')) })
        sessionStorage.removeItem('newTenant')
      }
      if (req.method === 'POST' || req.method === 'PUT') {
        tenantReq = tenantReq.clone({ headers: tenantReq.headers.append('Content-Type', 'application/json') })
      }
      return next.handle(tenantReq)
    } else {
      const tenantReq = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + btoa('pescanilla-ext:m12345678*')) })
      // const tenantReq = req.clone()
      return next.handle(tenantReq)
    }
  }
}
angular typescript rxjs angular-http-interceptors
1个回答
0
投票

this.userService.getUserName()。subscribe((name)=> {如果(name){this.user = name}})

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