【发布时间】:2020-02-22 21:22:32
【问题描述】:
点击Search button,我有一个从服务填充的ag-grid,它调用API。
我正在使用 map() 函数从原始 API 对象创建一个新对象。创建新对象时是否过滤和格式化所需的原始属性?然后将新对象设置为数据填充的网格。
问题:当我第一次单击“搜索”按钮时,虽然网络显示正确的数据获取,但由于错误,UI 中没有填充任何内容:
TypeError:无法读取未定义的属性“地图”。
在第二次点击期间,数据完美地填充到网格中。请注意,第二次点击不会导致此错误。
this._reportersService.getReporters()
.subscribe(
(data=> this.reporters = data),
(error => {
console.log(error);
this.errBlock = true;
this.errText = error.message;
})
)
var res = {
gridReporters: this.reporters.map(function(v) {
var fullName = v.TITLE+' '+v.FIRST_NAME+' '+v.MIDDLE_NAME+' '+v.LAST_NAME;
var address = v.STREET+' '+v.CITY+' '+v.STATE
return {
FULLNAME: fullName,
ADDRESS:address,
COUNTRY:v.COUNTRY,
POSTCODE:v.POSTCODE,
PHONE:v.PHONE,
EMAIL:v.EMAIL,
QUALIFICATION:v.QUALIFICATION,
INSTITUTION:v.INSTITUTION,
DEPARTMENT:v.DEPARTMENT
};
})
}
var objString = JSON.stringify(res);
objString = objString.split('{"gridReporters":').join('');
objString = objString.split('}]}').join('}]');
console.log("last str:"+objString);
this.reporterGridOptions.rowData = JSON.parse(objString);
this.reporterGridOptions.api.setRowData(this.reporterGridOptions.rowData);
}
另外,请注意:
public reporters: Reporters[] ;
export class Reporters {
REPORTER_ID: string;
CLIENT_ID: string;
TITLE: string;
FIRST_NAME: string;
MIDDLE_NAME:string;
LAST_NAME: string;
STREET: string;
CITY: string;
STATE: string;
COUNTRY: string;
PHONE: string;
EMAIL: string;
INSTITUTION: string;
DEPARTMENT: string;
QUALIFICATION: string;
CREATED_BY:string;
CREATED_DATE:Date;
IS_PRIMARY_CONTACT:number;
POSTCODE:string;
STATUS:string;
UPDATED_BY:string;
UPDATED_DATE:string;
}
所有相关代码都已附上,请帮助我。 提前致谢。 ASJ。
【问题讨论】:
-
因为在你的
map()被执行的时候this.reporters是未定义的,因为subscribe中的数据还没有到达
标签: angular