Json 角度2-从数组中获取对象id并显示数据
我目前有一个服务,它从一个显示线索列表的json文件中获取json对象数组。每个潜在客户都有一个id,单击此列表中的潜在客户时,它会将用户带到url ie中具有此id的视图(/lead/156af71250a941ccbd65f73e5af2e67) 我一直试图通过我的leads服务通过id获取此对象,但无法使其工作。我哪里做错了 另外,我在html中使用双向绑定 服务Json 角度2-从数组中获取对象id并显示数据,json,angular,typescript,object,Json,Angular,Typescript,Object,我目前有一个服务,它从一个显示线索列表的json文件中获取json对象数组。每个潜在客户都有一个id,单击此列表中的潜在客户时,它会将用户带到url ie中具有此id的视图(/lead/156af71250a941ccbd65f73e5af2e67) 我一直试图通过我的leads服务通过id获取此对象,但无法使其工作。我哪里做错了 另外,我在html中使用双向绑定 服务 leads; constructor(private http: HttpClient) { } getAll
leads;
constructor(private http: HttpClient) { }
getAllLeads() {
return this.http.get('../../assets/leads.json').map((response) => response);
}
getLead(id: any) {
const leads = this.getAllLeads();
const lead = this.leads.find(order => order.id === id);
return lead;
}
组成部分
lead = {};
constructor(
private leadService: LeadService,
private route: ActivatedRoute) {
const id = this.route.snapshot.paramMap.get('id');
if (id) { this.leadService.getLead(id).take(1).subscribe(lead => this.lead = lead); }
}
JSON
您没有使用新创建的
leads
数组(const leads
不是this.leads
),请执行以下操作:
getLead(id: any) {
return this.getAllLeads().find(order => order.LeadId === id);
}
并将您的map
更改为flatMap
,因为从服务器可以获得一个数组,但您必须将其转换为一个项目流:
getAllLeads() {
return this.http.get('../../assets/leads.json').flatMap(data => data);
}
如果必须的话,不要忘记导入它:
import'rxjs/add/operator/flatMap'代码>您没有使用新创建的leads
数组(const leads
不是this.leads
),因此请执行以下操作:
getLead(id: any) {
return this.getAllLeads().find(order => order.LeadId === id);
}
并将您的map
更改为flatMap
,因为从服务器可以获得一个数组,但您必须将其转换为一个项目流:
getAllLeads() {
return this.http.get('../../assets/leads.json').flatMap(data => data);
}
如果必须的话,不要忘记导入它:import'rxjs/add/operator/flatMap'代码>您可以在组件级别本身使用getLead,因为您没有制作任何api来获取信息。在您的组件中
this.lead = this.leads.find(order => order.id === id);
或者,要使上述服务起作用,只需执行leads
而不是此项。leads
const lead = leads.find(order => order.id === id);
您可以在组件级别本身使用getLead,因为您没有制作任何api来获取信息。在您的组件中
this.lead = this.leads.find(order => order.id === id);
或者,要使上述服务起作用,只需执行leads
而不是此项。leads
const lead = leads.find(order => order.id === id);
我得到的错误属性“find”在我的getAllLeads函数的“Observable”类型上不存在?你是指我的JSON设置吗?我得到的错误属性“find”在我的getAllLeads函数的“Observable”类型上不存在?你是指我的JSON设置吗?我得到的错误属性“find”在“Observable”@DBoi类型上不存在您必须导入find
:导入'rxjs/add/operator/find'代码>谢谢罗兰。我现在在第一个'id'上得到了这个错误-属性'id'在类型'Object'上不存在,即使我的ILead模型有一个id:string@DBoi即使您的ILead
模型具有id
,您确定对象具有吗?在JSON文件中,您有LeadId
。试试这个:order.LeadId==id
。如果这不是问题所在,请尝试记录您的对象以检查它有什么问题。这很有效。非常感谢您抽出时间来帮忙,非常感谢。还学到了一些新东西-合并地图!我得到的错误属性'find'不存在于'Observable'@DBoi类型上,您必须导入find
:import'rxjs/add/operator/find'代码>谢谢罗兰。我现在在第一个'id'上得到了这个错误-属性'id'在类型'Object'上不存在,即使我的ILead模型有一个id:string@DBoi即使您的ILead
模型具有id
,您确定对象具有吗?在JSON文件中,您有LeadId
。试试这个:order.LeadId==id
。如果这不是问题所在,请尝试记录您的对象以检查它有什么问题。这很有效。非常感谢您抽出时间来帮忙,非常感谢。还学到了一些新东西-合并地图!