Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RequestOptions deprecated symbol error in Angular 5

Tags:

angular5

I'm trying to adapt code in Angular 4 to Angular 5. I made many changes but I had an error about RequestOptions. The code is about authentication and this is where I have the error:

import { Injectable } from '@angular/core';
import { RequestOptions } from '@angular/http';
import { User } from '../model/model.user';
import 'rxjs/add/operator/map';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Injectable()
export class AuthService {
    constructor(public http: HttpClient) { }

    public logIn(user: User) {

        const headers = new HttpHeaders();
        headers.append('Accept', 'application/json')
        // creating base64 encoded String from user name and password
        const base64Credential: string = btoa(user.username + ':' + user.password);
        headers.append('Authorization', 'Basic ' + base64Credential);
        // this is where i'm having a problem : 
        const httpOptions = new RequestOptions();
        httpOptions.headers = headers;

        return this.http.get('http://localhost:8081/' + '/account/login',
            httpOptions)
            .map(resp => {
                // login successful if there's a jwt token in the response
                const user = resp.json().principal; // the returned user object is a principal object
                if (user) {
                    // store user details  in local storage to keep user logged in between page refreshes
                    localStorage.setItem('currentUser', JSON.stringify(user));
                }
            });
    }


    logOut() {
        // remove user from local storage to log user out
        return this.http.post('http://localhost:8081/' + 'logout', {})
            .map(resp => {
                localStorage.removeItem('currentUser');
            });

    }
}

error : deprecated symbol used please help me changing the code in Angular 5 (RequestOptions)

like image 492
SS_FStuck Avatar asked May 23 '18 13:05

SS_FStuck


1 Answers

You shouldn't use RequestOptions from the deprecated module @angular/http.

As indicated in the API documentation the options are now of the following type:

{
    headers?: HttpHeaders | {
        [header: string]: string | string[];
    };
    observe?: HttpObserve;
    params?: HttpParams | {
        [param: string]: string | string[];
    };
    reportProgress?: boolean;
    responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
    withCredentials?: boolean;
}

Thus you should write:

const headers = new HttpHeaders();
headers.append('Accept', 'application/json')
const base64Credential: string = btoa( user.username + ':' + user.password);
headers.append('Authorization', 'Basic ' + base64Credential);

this.http.get('http://localhost:8081/' + '/account/login', {
  headers: headers
});

Or alternatively:

this.http.get('http://localhost:8081/' + '/account/login', {
  headers: {
    'Accept': 'application/json',
    'Authorization': 'Basic ' + btoa(user.username + ':' + user.password)
  }
});
like image 108
David Walschots Avatar answered Nov 09 '22 16:11

David Walschots