通过补丁值方法中的 http 请求获取对象数组的问题

issue in fatching array of object through http request in patch value method

我正在创建一个平均堆栈项目我想在编辑表单中显示对象值数组所以问题是当我从后端接收所有 table 的数据时它会工作正常并显示数据表单,但是当任何 table table 数据不存在时,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 索引作为 response.data.emp_Edus[0] 检索 table 数据,但如果响应在第 0 个索引中没有数据,则会引发错误。

你需要做的是!在检索特定的 table 数据之前,只需验证 emp_Edus 是否不为空,并且长度 > 0,然后检索它。您需要对其他两个 table 进行相同的验证。

试试下面的方法!

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);