如何通过扩展BrowserXhr在Angular2中设置标题?

时间:2016-12-14 07:27:58

标签: angular http-headers xmlhttprequest

我正在为Angular 2 app设置标题。 这是我的代码:

 @Injectable()
    export class browserXhr extends BrowserXhr {
      constructor() {}
      build(): any {
        let xhr:XMLHttpRequest = super.build();
         xhr.setRequestHeader('X-Custom-Header', 'value');
        return <any>(xhr);
      }
    }

我跑的时候会给出错误

enter image description here

1 个答案:

答案 0 :(得分:1)

如果没有你发布错误,它只是猜测出了什么问题。但是可能你应该在构造函数中添加一个super()调用。另一个兴趣点是除了首都之外几乎同名的班级。通常的做法是在PascalCase中添加您的班级名称:

 @Injectable()
 export class MyBrowserXhr extends BrowserXhr {
      constructor() {
         super(); //<-- here
      }

      build(): XMLHttpRequest {
        let xhr:XMLHttpRequest = <XMLHttpRequest>super.build();
        xhr.open(method, url, async?, user?, password?); //fill in the correct details
        xhr.setRequestHeader('X-Custom-Header', 'value');
        return xhr;
      }
 }

发布错误后,您首先需要做的事情很明显。在设置请求标头之前,您必须使用open方法打开请求:

xhr.open(method, url, async?, user?, password?);

调用此方法后,您将可以设置请求标头