html - “对象”类型上不存在属性“过滤器”。尝试过滤响应时
问题描述
我试图从一个 json 文件中获取与 url 中播放器名称相同的数据。例如:localhost:4200/players/Febiven 应该只返回有关 Febiven 的信息。我正在使用 Angular 6
到目前为止,我有这个代码:
播放器.service.ts
get(ingameName){
return <Observable<Player>> this.http.get(endpoint).map(response =>{
let data = response.filter(item=>{
if (item.ingameName == ingameName) {
return item
}
});
if (data.length == 1){
return data[0]
}
return {}
})
.catch(this.handleError)
}
private handleError(error:any, caught:any): any{
console.log(error, caught)
}
播放器信息.component.ts
export interface Player {
ingameName: string;
name: string;
intro: string;
image: string;
info: string;
team: string;
dob: string;
earnings: string;
role: string;
game: string;
favourite: string;
IDs: string;
}
export class PlayerInfoComponent implements OnInit {
players: Player[] = null;
private routeSub:any;
private req:any;
ingameName:string;
player : player;
constructor(private route: ActivatedRoute, private plService : PlayerService) { }
ngOnInit() {
this.routeSub = this.route.params.subscribe(params => {
this.ingameName = params['ingameName'];
this.req = this.plService.get(this.ingameName).subscribe(data=>{
this.player = data as player
})
});
我收到错误“属性”过滤器在“对象”类型上不存在。而且我真的不知道如何解决这个问题,我查看了多个答案,但似乎没有一个对我有用。如果有人可以帮助我解决此错误,那就太好了
谢谢
解决方案
filter
只存在于数组中。您的响应是一个对象。你可以这样做:
get(ingameName){
return <Observable<Player>> this.http.get(endpoint).map(response =>{
let data = response.json();
if (data.ingameName == ingameName){
return data;
}
return {};
})
.catch(this.handleError)
}
推荐阅读
- android - 如何在 Android 的 Volley 中使用多部分上传多个图像
- javascript - JS 验证错误
- android - 如何获取仅在 arrylist 中设置的搜索值
- angular - kendo ui grid angular 5 mat-menu未在kendoGridCellTemplate中关闭
- asp.net - 来自查询的 GridView 中的数据
- java - Liferay 使用 /api/jsonws/user/update-user 更新用户
- java - Java 在泛型方法中使用泛型数组
- javascript - 如何将计算器添加到我的聊天机器人
- c++ - 答案怎么可能是 433?
- angularjs - 我想在每行之前添加行号,我正在使用 angularJs json 过滤器