无法读取角度8中未定义的属性“推”

时间:2019-12-16 07:19:30

标签: javascript angular typescript

我需要在列表中推送项目。

这是需要添加到列表中的模型。

FoodTitle   CountA  CountB  CountC
Food1       2       7       (null)
Food2       5       (null)  7
Food3       4       4       (null)
Food4       (null)  10      (null)
Food5       (null)  (null)  9
Food6       (null)  (null)  11

我尝试使用此代码:

export interface OfflineLessonList {

    id: number;
    title: string;
    courseId: number;
    coursetitle: string;
    published: boolean;
    payType: PayTypes;
    parentId: number;
    displayOrder: number;
    childes: OfflineChildLessonList[];

}

export interface OfflineChildLessonList {

    id: number;
    title: string;
    courseId: number;
    coursetitle: string;
    published: boolean;
    payType: PayTypes;
    parentId: number;
    displayOrder: number;

}

但是它告诉我这个错误:

  

无法设置未定义的属性“子级”

出什么问题?我该如何解决??

4 个答案:

答案 0 :(得分:1)

您的问题出在此代码上:

lessons.forEach(element => {
  let i = 0;
    if (parent.parentId === element.id) {
      let find = data.find(x => x.id === parent.parentId);
      find.childes = [];
      find.childes.push(model);
    }
    i++;
});

在某些情况下,let find = data.find(x => x.id === parent.parentId);如果找不到记录,将返回undefined。因此,您需要处理这种情况。

在尝试推送之前,请考虑检查该值是否存在:

lessons.forEach(element => {
  let i = 0;
    if (parent.parentId === element.id) {
      let find = data.find(x => x.id === parent.parentId);
      if (find) {
        find.childes = [];
        find.childes.push(model);
      }

    }
    i++;
});

答案 1 :(得分:1)

let find = data.find(x => x.id === parent.parentId);

在此处未定义查找值

  

查找方法的返回值

     

满足条件的数组中第一个元素的值   提供测试功能。否则,返回undefined。

您正在尝试为未定义的值设置属性,因此会出现错误

答案 2 :(得分:1)

添加其他支票

{{1}}

答案 3 :(得分:1)

尝试这样:

let find = data.find(x => x.id === parent.parentId);

if(find){
    find.childes = [];
    find.childes.push(model);
}