Migrating Http to HttpClient: params not sent

I am trying to rewrite piece of code which was written by Http to Http Client. It looks like:

  let params = new URLSearchParams();
    params.append('username',loginData.username);
    params.append('password',loginData.password);
    params.append('grant_type','password');
    params.append('client_id','client');

    let headers = new Headers({
      'Content-type': 'application/x-www-form-urlencoded; charset=utf-8',
      'Authorization': 'Basic ' + btoa("client:secret")
    });

    let options = new RequestOptions({
      headers: headers
    });

    return new Promise<boolean>(resolve => {
      this._http.post('http://localhost:8081/oauth/token', params.toString(), options)
        .subscribe(data =>  {
          this.saveToken(data.json());
          resolve(true);
        }, error => {
          alert('Invalid Credentials');
          console.log('Error : ' + error);
          resolve(false);
        })
    });

So this use Http which is instance of Http Client. Below is code which I wrote:

 const httpOptions = {
      headers: new HttpHeaders(
        {
          'Authorization': 'Basic ' + btoa("client:secret"),
          'Content-type': 'application/x-www-form-urlencoded; charset=utf-8'
        },)
    };

    let params = new HttpParams();
    params.set('username', req.username);
    params.set('password', req.password);
    params.set('grant_type', 'password');
    params.set('client_id', 'client');

    return this.getHttp.post(this.url, null, {headers, params});

The problem is whenever I try to use new code, the request fails with status code 400 and the following response:

{"error":"invalid_request","error_description":"Missing grant type"}

Does anyone know how can I upgrade my code?