Угловой 7 ответ .json метод - PullRequest
0 голосов
/ 02 июля 2019

Я пытался реализовать функцию getProblems, чтобы получить все проблемы в своем массиве.Но я всегда получаю сообщение об ошибке, показывающее res.json(), говорящее

Обещание не может быть назначено параметрам типа Проблема [].

Я думаю, что функция конвертируетответ как обещание и отображение его в Problem[] с помощью "res.json" и передача его в BehaviorSubject.

    import { Injectable } from '@angular/core';
    import { Problem } from '../models/problem.model';
    import { HttpClient, HttpResponse, HttpHeaders } from '@angular/common/http';
    import { BehaviorSubject} from 'rxjs';
    import { Observable } from 'rxjs';


    @Injectable()
    export class DataService {

    private problemsSource = new BehaviorSubject<Problem[]>([]);

    constructor(private http: HttpClient) { }

    getProblems(): Observable<Problem[]> {
        this.http.get('api/problems')
          .toPromise()
          .then((res: Response) => {
            this.problemsSource.next(res.json());
          })
          .catch(this.handleError);

        return this.problemsSource.asObservable();
      }

PS Я новичок в Angular, и я пытался переработать некоторые коды изпредыдущий проект.Поскольку Angular устарел в некоторых API, следующий код не работает, но я не мог найти новый способ его реализации.

1 Ответ

0 голосов
/ 02 июля 2019

Вы можете попробовать следующий подход, если ваш ответ не требует обработки.

getProblems(): Observable<Problem[]> {
  this.http.get<Problem[]>('api/problems')
           .toPromise()
           .then((res: Problem[]) => {
              this.problemsSource.next(res);
           })
           .catch(this.errorHandler);
  return this.problemsSource.asObservable();
}

FYI: .json() метод был необходим для класса Http, который теперь устарел . Угловой HttpClient автоматически преобразует ответ в объект JSON, предоставляя вам поддержку для типизированных возвращаемых значений.

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