在patch-value方法中通过http请求对对象数组进行fathing时出现的问题



我正在创建一个平均堆栈项目,我想在编辑表单中显示对象值的数组,所以问题是,当我从后端接收所有表的数据时,它会正常工作,并在表单中显示数据,但当任何表表数据不存在时,http请求补丁值方法会工作,并显示空表单

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索引作为响应来检索表数据。data.emp_Edus[0],但如果响应在第0个索引中没有数据,则会引发错误。

你需要做的是!在检索特定的表数据之前,只需验证emp_Edus是否为null,长度是否大于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);

最新更新