angular - Angular 11 的问题 - 类型承诺上不存在属性名称与 RXJS
问题描述
我一直在使用 Angular 11 进行项目,我使用 HttpClientModule 和 RxJS 来使用 SWAPI。我有这段代码,我是为了找人,但我不能,因为当尝试将数据转换为 JSON 时,我收到消息“类型承诺上不存在属性名称”
我的这项服务的代码是:
import { Injectable } from '@angular/core';
import { People } from './people';
import { Observable } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
import 'rxjs/add/operator/catch'
import { HttpClient } from '@angular/common/http';
@Injectable()
export class PeopleService {
constructor(private http: HttpClient) { }
getPeople(): Observable<People[]> {
return this.http
.get<People[]>("https://swapi.co/api/people")
.pipe(
map(this.toJSON),
catchError(err => this.handleError)
)
}
private toJSON(res: Response) {
const json = res.json();
return json.results || json.data;
}
}
解决方案
默认情况下,Angular 从 API 调用接收数据为 JSON,因此无需转换
将您的代码简化为
import { Injectable } from '@angular/core';
import { People } from './people';
import { Observable } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class PeopleService {
constructor(private http: HttpClient) { }
getPeople = ()=>
this.http.get<People[]>("https://swapi.co/api/people").pipe(
map(this.extractData),
catchError(err => this.handleError)
)
private extractData = (res: Response) => json.results || json.data;
}
你可以看看下面的演示
推荐阅读
- crystal-lang - Crystal 中的 Web 抓取库
- vba - 防止用户窗体切换工作表
- c# -
在服务器上上传代码时不起作用 - java - 如何在运行时更改属性文件和刷新配置类?
- java - Spring蛇案例和验证错误响应
- python - jupyder notebook: OSError: [Errno 2] "dot" not found in path
- sas - SAS PROC SQL - 如何将字符串转换为数字
- php - Ajax 无法使用 GET 向 php 发送数据
- amazon-web-services - 在 Glue 作业中创建 Glue 数据目录表
- entity-framework-core - 即使属性类型不可为空,是否可以将数据库列配置为允许 NULL?