Angular 7 响应 .json 方法

Angular 7 response .json method

我试图实现 getProblems 函数来获取其数组中的所有问题。但我总是在 res.json() 上收到一条错误消息,说

Promise is not assignable to parameters of type Problem[].

我认为该函数正在将响应转换为 promise 并通过 "res.json" 将其映射到 Problem[] 并将其传递到 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();
      }

P.S。我是 Angular 的新手,我试图从以前的项目中回收一些代码。由于 Angular 已弃用某些 API,因此以下代码无法正常工作,但我想不出一种新的实现方法。

如果您的回复不需要任何处理,您可以尝试以下方法。

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

仅供参考:Http class 需要 .json() 方法,现在是 deprecated。 angular HttpClient 自动将响应转换为 JSON 对象,让您支持类型化的 return 值。