Проблема при обработке набора данных из другого метода (http) - PullRequest
1 голос
/ 08 ноября 2019

У меня проблема с использованием Angular http-запросов. Пожалуйста, взгляните на следующие фрагменты кода:

http-service.ts

import {Injectable} from '@angular/core';
import {environment} from '../../../../environments/environment';
import {HttpClient, HttpHeaders} from '@angular/common/http';

const BASE_URL = environment.API.MAIN.PATH;
const WAR = environment.API.MAIN.WAR;

@Injectable({
  providedIn: 'root'
})
export class HttpService {
  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'application/json',
      'Authorization': 'my-auth-token'
    })
  };

  constructor(private http: HttpClient) {
  }

  getITById(id) {
    return this.http.get(`${BASE_URL}/${WAR}/events/find?id=${id}`);
  }
}

app-component.ts

import {Component, Input, OnInit} from '@angular/core';
import {HttpService} from '../../services/http-service.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})

export class AppComponent implements OnInit {

  constructor(private httpService: HttpService) {
  }

  ngOnInit() {
  }

  processPart(idToPass) {
    // get the loaded value from requesPart(idToPass); function and process that data set in this function.
    let data = requestPart(idToPass);
  }

  requestPart(id) {
    // (1)
    return this.httpService.getITById(id)
      .subscribe((data: any) => {
          console.log(data)
        }, error => {
          console.error(error);
        }
      );
  }

}

Это проблема. Я знаю, что реализация, которую я сделал в (1), неверна (это вернет объект подписчика). Я хочу знать, как получить набор данных из метода requestPart(id); для обработки в методе processPart(idToPass);.

Структура проекта не может быть изменена, и http-сервис не может быть импортирован в компонент (как предлагали некоторые из существующих решений)

Буду признателен, если кто-то укажет, что я здесь упускаю.

Заранее спасибо.

1 Ответ

0 голосов
/ 08 ноября 2019

Попробуйте это:

requestPart(id) {
    // (1)
    this.httpService.getITById(id)
      .subscribe((data: any) => {
          console.log(data);
          if(data)
          {
            return data;
          }
        }, error => {
          console.error(error);
        }
   );
}
...