首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Primeng megamenu错误

Primeng megamenu错误
EN

Stack Overflow用户
提问于 2018-06-07 18:12:38
回答 3查看 738关注 0票数 0

我正在实现简单的primeng megamenu。我得到了以下错误。谁能帮助我的代码哪里出了问题,如果有问题该如何修复?我遵循了primeng中提到的示例代码。下面的代码仅显示顶部菜单项,而不显示子菜单项。

我使用的Primeng版本是:~4.1.0

组件:

代码语言:javascript
复制
        import { MegaMenuModule } from 'primeng/primeng';
        <p-megaMenu [model]="items"></p-megaMenu>

items: Array<MenuItem>;
    this.items = [
        {
            label: 'TV', icon: 'fa fa-fw fa-check',
            items: [
                {
                    label: 'TV 1',
                    items: [{ label: 'TV 1.1' }, { label: 'TV 1.2' }]
                },
                {
                    label: 'TV 2',
                    items: [{ label: 'TV 2.1' }, { label: 'TV 2.2' }]
                }
            ]
        },
        {
            label: 'Sports', icon: 'fa fa-fw fa-soccer-ball-o',
            items: [
                {
                    label: 'Sports 1',
                    items: [{ label: 'Sports 1.1' }, { label: 'Sports 1.2' }]
                },
                {
                    label: 'Sports 2',
                    items: [{ label: 'Sports 2.1' }, { label: 'Sports 2.2' }]
                }
            ]
        },
        {
            label: 'Entertainment', icon: 'fa fa-fw fa-child',
            items: [
                {
                    label: 'Entertainment 1',
                    items: [{ label: 'Entertainment 1.1' }, { label: 'Entertainment 1.2' }]
                },
                {
                    label: 'Entertainment 2',
                    items: [{ label: 'Entertainment 2.1' }, { label: 'Entertainment 2.2' }]
                }
            ]
        }
    ];

我得到的输出是:

错误:

代码语言:javascript
复制
 Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

谢谢

EN

回答 3

Stack Overflow用户

发布于 2018-06-07 18:27:50

尝试将其声明为:

代码语言:javascript
复制
items: MenuItem[];
票数 0
EN

Stack Overflow用户

发布于 2018-07-19 13:55:59

MegaMenu使用公共menumodel api来定义它的项:也尝试导入这两个模块。

代码语言:javascript
复制
import {MenuModule} from 'primeng/menu';
import {MenuItem} from 'primeng/api';
票数 0
EN

Stack Overflow用户

发布于 2019-07-26 17:55:38

在TV、Sports和Entertainment的项目数组中,不要直接放入对象。你已经直接放置了对象,这就是为什么你指定的错误即将到来。将它们放入另一个数组中,如下所示。

代码语言:javascript
复制
this.items = [
        {
            label: 'TV', icon: 'fa fa-fw fa-check',
            items: [
                [
                {
                    label: 'TV 1',
                    items: [{ label: 'TV 1.1' }, { label: 'TV 1.2' }]
                },
                {
                    label: 'TV 2',
                    items: [{ label: 'TV 2.1' }, { label: 'TV 2.2' }]
                }
            ]
        ]
        },
        {
            label: 'Sports', icon: 'fa fa-fw fa-soccer-ball-o',
            items: [
                [
                {
                    label: 'Sports 1',
                    items: [{ label: 'Sports 1.1' }, { label: 'Sports 1.2' }]
                },
                {
                    label: 'Sports 2',
                    items: [{ label: 'Sports 2.1' }, { label: 'Sports 2.2' }]
                }
            ]
        ]
        },
        {
            label: 'Entertainment', icon: 'fa fa-fw fa-child',
            items: [
                [
                {
                    label: 'Entertainment 1',
                    items: [{ label: 'Entertainment 1.1' }, { label: 'Entertainment 1.2' }]
                },
                {
                    label: 'Entertainment 2',
                    items: [{ label: 'Entertainment 2.1' }, { label: 'Entertainment 2.2' }]
                }
            ]
        ]
        }
    ];

*注意-在items数组中,我们给出另一个数组来垂直分隔项目。在您的示例中,TV1和TV2将出现在Sports1,Sports2和Entertainment1,Entertainment2的同一列中。

Image here

假设您希望TV1和TV2有两列,那么代码应该是

代码语言:javascript
复制
 this.items = [
        {
            label: 'TV', icon: 'fa fa-fw fa-check',
            items: [
                [
                {
                    label: 'TV 1',
                    items: [{ label: 'TV 1.1' }, { label: 'TV 1.2' }]
                }],[
                {
                    label: 'TV 2',
                    items: [{ label: 'TV 2.1' }, { label: 'TV 2.2' }]
                }
            ]
        ]
        },
        {
            label: 'Sports', icon: 'fa fa-fw fa-soccer-ball-o',
            items: [
                [
                {
                    label: 'Sports 1',
                    items: [{ label: 'Sports 1.1' }, { label: 'Sports 1.2' }]
                },
                {
                    label: 'Sports 2',
                    items: [{ label: 'Sports 2.1' }, { label: 'Sports 2.2' }]
                }
            ]
        ]
        },
        {
            label: 'Entertainment', icon: 'fa fa-fw fa-child',
            items: [
                [
                {
                    label: 'Entertainment 1',
                    items: [{ label: 'Entertainment 1.1' }, { label: 'Entertainment 1.2' }]
                },
                {
                    label: 'Entertainment 2',
                    items: [{ label: 'Entertainment 2.1' }, { label: 'Entertainment 2.2' }]
                }
            ]
        ]
        }
    ];

Image here

我已经检查过了,它工作正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50738633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档