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

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


export interface ProjectObject{

    title: string;

    link?: string;

    summary?: string;

    description?: DescriptionPoint[];

    sections?: ProjectObject[];

    elements?: ProjectElement[];

    challenges?: ProjectChallenges[];

    feedback?: ProjectFeedbackItem[];

}

我想要做的是从每个对象中提取title和link属性并将其存储在一个像这样的变量中


export interface NavLink{

    title: string;

    link: string;

    subLinks?: NavLink[]

}

标题和链接属性当然是要从每个对象中提取的属性。该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;

    });

}

将ProjectObjects数组传递给其中时,出现以下错误


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


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


幕布斯7119047
浏览 139回答 1
1回答

慕村9548890

以下错误不是打字稿问题,而是 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;    });}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript