You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 2中为ng2-completer添加请求头的问题求助

解决ng2-completer中添加请求头的问题

你现在遇到了两个核心问题:请求头未正确携带,以及TypeScript的参数错误,我们一步步来搞定:

1. 先修正Authorization头的格式错误

你的授权头里Bearer和token之间漏掉了一个空格,这会导致API无法正确识别token——哪怕请求头发送出去,也会验证失败。正确的格式应该是:

'Authorization': 'Bearer 0l4B9VpOnJMBzxMee8SQdU8pFW_L8wBAyQ'

2. 正确设置请求头并解决TypeScript报错

ng2-completer的RemoteData类提供了两种可靠的方式设置请求头:直接用headers()方法,或者通过requestOptions()传递完整请求配置。结合你的报错信息,下面是修正后的完整代码:

import { Headers, RequestOptions } from '@angular/http'; // 务必导入必要模块

constructor(
  private completerService: CompleterService, 
  private translationService: AppTranslationService, 
  private alertService: AlertService, 
  private useronboardService: UserOnboard
) { 
  // 创建Headers对象,包含API要求的所有请求头
  const headers = new Headers({
    'Accept': 'application/json',
    'Authorization': 'Bearer 0l4B9VpOnJMBzxMee8SQdU8pFW_L8wBAyQ'
  });
  
  // 包装成RequestOptions对象
  const options = new RequestOptions({ headers: headers });

  const url = "https://arsapi.azurewebsites.net/api/searchusers?searchstring=";
  this.dataService = completerService.remote(url, 'userName', 'userName');
  
  // 设置请求配置(注意方法名是驼峰式的requestOptions,别写成小写的requestoptions)
  this.dataService.requestOptions(options);
}

如果上面的requestOptions调用仍然报错,你可以换用更直接的headers()方法单独设置请求头,这在多数ng2-completer版本里更稳定:

// 替换掉this.dataService.requestOptions(options); 这一行
this.dataService.headers(headers);

额外要注意的细节

  • 确认你导入的Headers和RequestOptions来自@angular/http(Angular 2用这个包,不是@angular/common/http)
  • 检查API URL是否正确:你代码里写的是arsapi.azurewebsites.net,但curl示例里是apsapi.azurewebsites.net,这可能是笔误,要和实际API地址保持一致

内容的提问来源于stack exchange,提问作者Niranjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:41:09