Как получить доступ к значению ответа от httpclient angular 6 - PullRequest
0 голосов
/ 06 июля 2018

Я использую HttpClient для отправки запроса. Я сделал услугу для отправки запроса.

import { Injectable } from '@angular/core';
import { HttpClient, HttpParams, HttpHeaders,HttpResponse ,} from '@angular/common/http';
import {Observable} from 'rxjs';
import {map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class HttpService {
  apiRoot: string = 'https://xxxx/api';

  constructor(private http: HttpClient) { }

  getQueryParam(obj) {
    let search = new HttpParams();
    for (let key in obj) {
      search =  search.set(key, obj[key]);
    }
    return search;
  }


  post(apiURL, params, data){
    console.log('Inside Post Request');
    let paramsData = this.getQueryParam(params);
      let CompleteURL = `${this.apiRoot}` + apiURL;
      return this.http.post(CompleteURL,data,{params : paramsData,observe : 'events'});
  }
}

В моем компоненте:

login() {
    this.admin.password = Md5.hashStr(<string>this.admin.password);
    this._httpService.post('/loginAdmin', { "name": "vinay" }, this.admin)
      .subscribe(res => {
        console.log(res.success);

      },
        (err: HttpErrorResponse) => {
          if (err.error instanceof Error) {
            console.error('An error occurred:', err.error.message);
          } else {
            console.error(`Backend returned code ${err.status}, body was: ${err.error}`);
          }
        }
      );
  }

В моем компоненте я хочу получить доступ к значению тела ответа, но при этом я получаю сообщение об ошибке, что "свойство 'success" не существует для типа "HttpEvent<Object>" ". Я проверил в Google некоторые, делающие интерфейс. но «res.success» может быть массивом или объектом. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 01 октября 2018
login() {
    this.admin.password = Md5.hashStr(<string>this.admin.password);
    this._httpService.post('/loginAdmin', { "name": "vinay" }, this.admin)
      .subscribe(res:any => {
        console.log(res.success);

  },
    (err: HttpErrorResponse) => {
      if (err.error instanceof Error) {
        console.error('An error occurred:', err.error.message);
      } else {
        console.error(`Backend returned code ${err.status}, body was: ${err.error}`);
      }
    }
  );
}

используйте любой в качестве типа для ответа, получаемого от службы. Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...