Argument of type '{header:Header;}' is not assignable to parameter of type 'RequestOptionsArgs'

半腔热情 提交于 2019-12-03 15:52:22

I finally solved mine by skipping the RequestOptions object.
I'm using Angular 4 so it may be different for me, but I create an untyped object and pass it into the http method function... -

import { Identifiable, RestRepositoryService, HalResponse } from '../spring-data/rest-repository.service';
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { ContentTemplate } from '../content-template/content-template.service';

export class ContentItem extends HalResponse {
  id: string;
  name: string;
  description?: string;
  fieldValues: any;
  template: any;
  contentType: any;
}

@Injectable()
export class ContentItemService extends RestRepositoryService<ContentItem>  {

  getContentType(contentItem: ContentItem) {
    return this.http.get(contentItem._links.contentType.href);
  }

  getContentTemplate(contentItem: ContentItem) {
    return this.http.get(contentItem._links.template.href);
  }

  setContentTemplate(contentItem: ContentItem, template: ContentTemplate) {
    const headers = new HttpHeaders({'Content-Type': 'text/uri-list'});
    return this.http.put(contentItem._links.template.href, template._links.self.href, {headers: headers});
  }

  constructor(http: HttpClient) {
    super(http, '/api/contentItems');
  }

}

try this method. does this help

 options = new RequestOptions();
            options.headers = new Headers();
            options.headers.append('Content-Type', 'application/json');
            options.headers.append('X-Requested-With', 'XMLHttpRequest');

The issue you have is here:

private getHeaders() {
    // I included these headers because otherwise FireFox
    // will request text/html instead of application/json
    let headers = new Headers();
    headers.append('Accept', 'application/json');
    return headers;
}

The implementation of HttpHeaders append() is:

append(name: string, value: string|string[]): HttpHeaders { 
   return this.clone({name, value, op: 'a'}); 
 } 

It returns a clone of your HttpHeaders object. To make your append affect, you need to store it in a variable which is:

headers = headers.append('Accept', 'application/json');
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!