p-menu没有显示出来

时间:2016-07-19 07:54:13

标签: angular primeng

我目前正在测试角度为2的primeng,我想创建一个简单的菜单。

这是我的代码:

import {Component, OnInit} from '@angular/core';
import {Menu, MenuItem} from 'primeng/primeng';

@Component({
    templateUrl: 'app/salaries/menudroite.html',
    selector: 'menu-droite',
    providers: [],
   directives: [Menu]
})
export class menuDroiteComponent implements OnInit   {

  private items: MenuItem[];

  ngOnInit() {
        this.items = [{
        label: 'File',
        items: [
            {label: 'New', icon: 'fa-plus'},
            {label: 'Open', icon: 'fa-download'}
        ]
    },
    {
        label: 'Edit',
        items: [
            {label: 'Undo', icon: 'fa-refresh'},
            {label: 'Redo', icon: 'fa-repeat'}
        ]
    }];
  }

}

和html代码

<h4>Menu droite</h4>
<p-menu [model]="items"></p-menu>

当我启动网站时,没有任何显示。如果我删除html中的“p-menu”行,我会看到“h4”......

我做错了什么?

3 个答案:

答案 0 :(得分:0)

很可能你在指令列表中缺少列表menuitem,如下所示:

 directives: [Menu, MenuItem]

根据documentation here

  

api的核心是MenuItem类,它定义了各种选项,例如菜单中项目的标签,图标和子项。

所以你必须在指令列表中添加MenuItem。

答案 1 :(得分:0)

我一直在努力解决相同的情况,我只是无法从primeng / primeng导入MenuItem,我在primeng / common文件夹中找到了接口,但是现在我只声明了以下内容。

private items: any[];

就是这样。

答案 2 :(得分:0)

所以我的工作

<p-menu #menu popup="popup" [model]="items"></p-menu>

然后ts文件如下,只需查看导入和onInit

import { Component, OnInit } from '@angular/core';
import { MenuItem } from 'primeng/primeng';

import { ServiceLocatorService } from '../../commonComponents/service/serviceLocator.service';

@Component({
    selector: 'productAdmin',
    template: require('./app.component.html'),
    styles: [require('./app.component.css')]
})
export class AppComponent {

    items: MenuItem[];

    constructor(private locator: ServiceLocatorService) {
        var url: string = location.origin;
        this.locator.setUrl(url);
    }

    ngOnInit() {
        this.items = [
            { label: 'Product Definition', routerLink: ['/productSetup']},
            { label: 'Base Product Pricing', routerLink: ['/productPricing'] },
            { label: 'Base Option Pricing', routerLink: ['/optionPricing']}
            ];
    }
}