javascript - 补丁值方法中通过http请求获取对象数组的问题
问题描述
我正在创建一个平均堆栈项目我想在编辑表单中显示对象值数组所以问题是当我从后端的所有表中接收数据时它会正常工作并在表单中显示数据但是当任何表表数据不是目前的http请求补丁值方法dosnt工作,它显示一个空的形式
json结构
"data": {
"id": 7,
"location": "Bikaner",
"empId": "ct141",
"firstName": "mahendra",
"lastName": "chauhan",
"dateOfBirth": "1984-09-11",
"gender": "male",
"emp_Edus": [
{
"id": 2,
"university": "MGSU",
"degree": "bca",
"eduStart": "2012-06-06",
"eduEnd": "2015-06-02",
],
"emp_Pre_Job_Details": [
{
"id": 2,
"company": "I tech",
"designation": "Manager",
"preJobStart": "2016-08-11",
"preJobEnd": "2020-02-12",
}
],
"emp_Current_JobSta": [
{
"id": 2,
"jobStatus": "Contractual",
"start": "2020-02-02",
"end": "2023-02-02",
"jobTitle": "Manager",
"accessReq": "1",
"supervisor": "",
}
]
}
补丁值请求
loadEmpData(id)
{
const formData = new FormData();
formData.append("id", id);
console.log("formData" + formData);
this.cs.empprofile(id).subscribe(response => {
if (response.status == 1) {
this.empData = response.data;
this.empEdusData = response.data.emp_Edus;
this.empcurrentJob = response.data.emp_Current_JobSta;
this.empPreJobData= response.data.emp_Pre_Job_Details;
this.editEmpForm.patchValue({
photograph: response.data.photograph,
empId: response.data.empId,
firstName: response.data.firstName,
lastName:response.data.lastName,
gender: response.data.gender,
university: response.data.emp_Edus[0].university,
degree: response.data.emp_Edus[0].degree,
eduStart: response.data.emp_Edus[0].eduStart,
eduEnd: response.data.emp_Edus[0].eduEnd,
company: response.data.emp_Pre_Job_Details[0].company,
designation: response.data.emp_Pre_Job_Details[0].designation,
preJobStart:response.data.emp_Pre_Job_Details[0].preJobStart,
preJobEnd: response.data.emp_Pre_Job_Details[0].preJobEnd,
jobTitle: response.data.emp_Current_JobSta[0].jobTitle,
start: response.data.emp_Current_JobSta[0].start,
end: response.data.emp_Current_JobSta[0].end,
jobStatus: response.data.emp_Current_JobSta[0].jobStatus,
supervisor : response.data.emp_Current_JobSta[0].supervisor
});
解决方案
在您的情况下,您从后端获取数据,您可以在网络中验证它是否存在。在补丁中,您尝试使用 0 索引作为 response.data.emp_Edus[0] 检索表数据,但如果响应在第 0 索引中没有数据,则会引发错误。
你需要做的是!在检索特定的表数据之前,只需验证 emp_Edus 是否不为空,并且长度 > 0,然后检索它。您需要对其他两个表进行相同的验证。
试试下面的方法!
let myForm = {};
myForm = {
photograph: response.data.photograph,
empId: response.data.empId,
firstName: response.data.firstName,
lastName:response.data.lastName,
gender: response.data.gender
};
if(response.data.emp_Edus != null && response.data.emp_Edus.length>0){
myForm.university= response.data.emp_Edus[0].university;
myForm.degree= response.data.emp_Edus[0].degree;
myForm.eduStart= response.data.emp_Edus[0].eduStart;
myForm.eduEnd= response.data.emp_Edus[0].eduEnd;
}
if(response.data.emp_Pre_Job_Details != null && response.data.emp_Pre_Job_Details.length>0){
myForm.company= response.data.emp_Pre_Job_Details[0].company;
myForm.designation= response.data.emp_Pre_Job_Details[0].designation;
myForm.preJobStart=response.data.emp_Pre_Job_Details[0].preJobStart;
myForm.preJobEnd= response.data.emp_Pre_Job_Details[0].preJobEnd;
}
if(response.data.emp_Current_JobSta != null && response.data.emp_Current_JobSta.length>0){
myForm.jobTitle= response.data.emp_Current_JobSta[0].jobTitle;
myForm.start= response.data.emp_Current_JobSta[0].start;
myForm.end= response.data.emp_Current_JobSta[0].end;
myForm.jobStatus= response.data.emp_Current_JobSta[0].jobStatus;
myForm.supervisor = response.data.emp_Current_JobSta[0].supervisor;
}
});
this.editEmpForm.patchValue(myForm);
推荐阅读
- java - 尝试通过 http 调用服务时出现异常
- python - 不支持重定向
- c++ - 如何将多维char数组复制到char *
- amazon-web-services - 将服务器从 Google Cloud 移动到 AWS
- python-3.x - 2个系列/df.columns之间的模糊查找
- angular - 用于 ASP.NET Core API 应用和 Angular6 应用的 DockerCompose
- debian-based - Debian 5 是否有 augeas 版本 1.0
- apache-spark - 撤消规模数据pyspark
- angular - 我的primeng时间表出现但没有事件
- swift - Swift 选项卡式栏 2 URL