角度错误:无法设置未定义的属性
2021-06-14
1504
我将数据从 API 传输到我的 Angular 组件文件,但是当我将数据分配给对象变量时,出现了无法设置未定义属性的错误。 这是我的代码:
Class : UserDetails as
export class UserDetails {
DOB?: string;
Gender?: string;
CellPhone?: string;
}
Component.ts :
export class PerComponent implements OnInit {
public userProfileData: UserDetails;
constructor( private commonService : CommonService) {
}
ngOnInit(): void {
this.loadData();
}
loadData() {
let profileDetailParam = {ProcedureName: 'myprocname', Parameters: ['myparam']};
this.commonService.GetDataFromStoredProcedure(profileDetailParam)
.subscribe((data) => {
let parseString = require('xml2js').parseString;
let jsonData: UserDetails[];
parseString(data, function (err, result) {
if (result.NewDataSet != null)
jsonData = result.NewDataSet.SPGetDetails[0];
this.userProfileData = jsonData ;
console.log(this.userProfileData);
});
});
}
}
jsondata 包含我期望的 JSON 格式数据。
我收到错误 core.js:4197 ERROR TypeError: 无法设置未定义的属性“userProfileData”
我知道我没有初始化 userProfileDetails,但应该如何以及在哪里初始化。
我尝试了构造函数和 ngOnInit,但没有任何效果
2个回答
“this”对象的引用已在函数内部更改
parseString(data, function (err, result) {
要访问外部范围的“this”对象,您可以使用箭头函数:
parseString(data, (err, result) => {
if (result.NewDataSet != null)
jsonData = result.NewDataSet.SPGetDetails[0];
outerContext.userProfileData = jsonData ;//////// use here
console.log(outerContext.userProfileData);
});
您可以在此处阅读更多信息: “箭头函数”和“函数”是否等效/可互换?
Sanjay Choudhary
2021-06-14
函数“parseString”存在于“this”之外,因此当您要求它分配该值时,它不知道该上下文中的“this”是什么。
也许将 parseString 定义为此组件内它自己的函数,并使用“this.parseString”调用它。
cklimowski
2021-06-14