需要帮助来创建动态导航菜单

时间:2019-10-12 06:49:36

标签: javascript angular typescript

我正在为线框图应用创建一个应用。我正在开发一个用于从线框应用程序的数据生成链接的功能,该功能将由部分中不可预测的部分组成。这些部分的界面形状如下

export interface ProjectObject{
    title: string;
    link?: string;
    summary?: string;
    description?: DescriptionPoint[];
    sections?: ProjectObject[];
    elements?: ProjectElement[];
    challenges?: ProjectChallenges[];
    feedback?: ProjectFeedbackItem[];
}

我要做的是从每个对象中提取titlelink属性,并将其存储在这样的变量中

export interface NavLink{
    title: string;
    link: string;
    subLinks?: NavLink[]
}

title和link属性当然是要从每个对象中提取的属性。 subLinks属性用于保存要从sections属性的其他部分检索的嵌套链接。

我想出了以下功能,试图提取并形成链接

createProjectLinks(data: ProjectObject[]){
    return data.map(a=>{
        let links: NavLink = {
            title: a.title,
            link: a.link,
            subLinks: this.createProjectLinks(a.sections)};
        return links;
    });
}

ProjectObject s数组传递给它时,出现以下错误

  

错误TypeError:无法读取未定义的属性“地图”

起初我以为这是一个异步问题,但是我在组件上方直接创建了一个const用作虚拟数据,以避免异步问题,并且在将虚拟数据传递到函数中时仍然遇到相同的错误。我究竟做错了什么?我有更好的方法来实现此功能吗?

1 个答案:

答案 0 :(得分:0)

以下错误不是打字稿问题,而是JavaScript问题

TypeError: Cannot read property 'map' of undefined

执行此操作

createProjectLinks(data: ProjectObject[] = []){ //give default value of [] to prevent mapping on undefined data
    return data.map(a=>{
        let links: NavLink = {
            title: a.title,
            link: a.link,
            subLinks: this.createProjectLinks(a.sections)};
        return links;
    });
}