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 值。
我试图实现 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 值。