2016-09-06 13 views
4

私は優れたプライム-ngのライブラリからのp-panelmenuを使用しています。PrimeNG MenuCallback

<p-panelMenu [model]="items" (click)="onClicked(event)"></p-panelMenu> 

問題は何かを実行するメニューを取得する方法はありません。 primeNGのウェブサイト上の例では、すべての表示メニューは、それらの任意のアクションをトリガしませんが。

は、どのように私は、現在選択されているアイテムを得ることができますか?私は、MenuItemクラスの「コマンド」コールバックがあることに注意してください。メニュー項目ごとにコールバックを定義するのは賢明です。選択されたメニュー項目を渡すだけのコールバックではなく私はここで何が欠けていますか?

答えて

2

Iは、メニュー項目とサブ項目をループに再帰関数を記述し、それぞれにコマンドコールバックを割り当てる必要がありました:

export class TreeViewComponent implements OnInit { 
    @Output() onSelectedChanged: EventEmitter<MenuItem> = new EventEmitter<MenuItem>(); 

    items : any[] = []; 

    constructor (private contentService: ContentService) { 
    } 

    ngOnInit() { 
     this.getFolders(); 
    } 

    getFolders() { 
    this.contentService.getFolders().subscribe(this.setItems); 
    } 

    setItems = (x: any) => { 
     this.assignCallback(x); 
     this.items = x.items; 
    } 

    assignCallback(item:MenuItem){ 
    if(item.items != null && item.items.length > 0) { 
     item.items.forEach(x => this.assignCallback(x)) 
    } 
    item.command = this.commandCallback; 
    } 

    commandCallback(ev){ 
    console.log(ev.item); 
    } 
} 

私は未解決の問題を残します。より良い方法があるはずですか?

0

https://www.primefaces.org/primeng/#/menumodel

あなたはPrimeNGのメニューコンポーネントのほとんどのためのMenuItemの種類のドキュメントを読むことをお勧めします。アイテムが持つかもしれないオプションのリストの中では、コールバックを実行「コマンド」オプションがあります。