调用服务同时返回一个合并的数组



我正在尝试为两个不同的picklist检索数据,但使用相同的服务,正如您在这里看到的那样。

每一个都很好,但它们相互融合。所以打印";businessSectorData";以及";数据";,给出了相同的值,两个调用的所有值都合并到一个数组/对象中。如何避免它们合并为一个数组?

x.Component.ts

public countryPicklist: IPicklistCategories[] = [];
public businessSectorPicklist: IPicklistCategories[] = [];
ngOnInit(): void {
this.CrmService.GetPicklistValues("contact", "country").subscribe({
next: (data: IPicklistCategories[]) => {
this.countryPicklist = data;
console.log(data);
}
});
this.CrmService.GetPicklistValues("contact", "type").subscribe({
next: (businessSectorData: IPicklistCategories[]) => {
this.businessSectorPicklist = businessSectorData;
console.log(businessSectorData);
}
});
}

x.service.ts

picklistCategories: IPicklistCategories[] = [];
public GetPicklistValues(entity: string, fieldName: string): any {
//returns metadata and converts it to array with label and value
let endpoint = mysecretendpoint;
return this.get<IPicklistResponse>(endpoint).pipe(
map((res: IPicklistResponse) => {
let options = res.GlobalOptionSet.Options;
options.forEach((data: any) => {
this.picklistCategories.push({
"label": data.Label,
"value": data.Value
});
});
return this.picklistCategories;
}))
}

将属性重置为空字符串,或创建一个局部变量。数组包含上一次调用的结果,因此您会遇到此问题!

public GetPicklistValues(entity: string, fieldName: string): any {
this.picklistCategories = []; // or create a local variable called 
//  const picklistCategories =[]; which will always be empty when function is called!
//returns metadata and converts it to array with label and value
let endpoint = mysecretendpoint;
return this.get<IPicklistResponse>(endpoint).pipe(
map((res: IPicklistResponse) => {
let options = res.GlobalOptionSet.Options;
options.forEach((data: any) => {
this.picklistCategories.push({
"label": data.Label,
"value": data.Value
});
});
return this.picklistCategories;
}))
}

相关内容

最新更新