Angular 4/5 HttpClient: Argument of type string is not assignable to 'body'

前端 未结 4 1469
醉酒成梦
醉酒成梦 2020-11-30 05:58

The Angular docs say:

The response body doesn\'t return all the data you may need. Sometimes servers return special headers or status codes to indic

4条回答
  •  悲哀的现实
    2020-11-30 06:22

    The way I got around this, without inline-ing the options (which can lead to code that's not as clean) was to create an interface for the request options. Code looks like this :

    export interface IRequestOptions {
        body?: any;
        headers?: HttpHeaders | { [header: string]: string | Array };
        observe?: any;
        params?: HttpParams | { [param: string]: string | Array };
        reportProgress?: boolean;
        responseType?: "arraybuffer" | "blob" | "json" | "text";
        withCredentials?: boolean;
    }
    

    Then this is used as such :

    const options: IRequestOptions = {
        headers: new HttpHeaders({"Content-Type": "application/json"}),
        observe: "response"
    };
    return this.httpClient.post(`${environment.USER_SERVICE_BASE_URL}`,
        {"username": credentials.username, "password": credentials.password}, options)
        .pipe(
            map((res: HttpResponse) => ...
        );
    

    Change for original post to use lettable or pipeable (whatever the current name is today) operators

提交回复
热议问题