web-dev-qa-db-fra.com

Application des en-têtes de demande angulaires 6

Je suis assez nouveau pour angular et j'utilise la dernière version. 

J'essaie d'exécuter une demande de publication mais je rencontre un problème CORS. Je pense que le problème vient du fait que mon en-tête de demande ne contient pas de type de contenu et que je souhaite l'ajouter à mon code. 

Dans la version précédente, cette méthode ci-dessous fonctionnait mais ne fonctionnait plus. Que dois-je faire pour appliquer correctement les en-têtes dans Angular 6

Je reçois l'erreur suivante 

"L'argument de type '{header: any;}' n'est pas assignable au paramètre de type 'RequestOptionsArgs'."

import { Injectable } from '@angular/core';
import { environment } from '../environments/environment';

import { User } from './user';
import { Http } from '@angular/http';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map, catchError } from "rxjs/operators";



const API_URL = environment.apiUrl;

@Injectable({
  providedIn: 'root'
})
export class ApiService {

  constructor(private http: Http) {

  }

  public createUser(user: User): Observable<User> {
    let getHeaders: HttpHeaders = new HttpHeaders({
      'Content-Type': 'application/json'
    });
    return this.http
     .post(API_URL + '/users', user, {header: getHeaders}).pipe(
        map(response => {
          return new User(response.json());
        }), catchError(this.handleError)
      )
  }
1
MSkiLLz

app/json est automatiquement appliqué aux requêtes HttpClient, vous n'avez donc pas besoin de le faire. 

Cela étant dit, vous utilisez la mauvaise importation HTTP ..__ devrait être:

import { HttpClient } from '@angular/common/http';

constructor(private http: HttpClient) {}

this.http.post(...);
4