我如何从 Primeng 获取选项卡菜单中的选定项目
How do i get the selected Item in a Tabmenu from Primeng
我有一个简单的 MenuItem 数组,用于填充来自 primeng 的 Tabmenu 组件。这看起来像这样:
.ts 文件:
items = MenuItem[];
activeItem = MenuItem;
//constructor etc...
ngOnInit() {
this.items = [
{label: 'Homework', icon: 'fa-file-pdf-o'},
{label: 'Movies', icon: 'fa-file-pdf-o'},
{label: 'Games', icon: 'fa-file-pdf-o'},
{label: 'Pictures', icon: 'fa-file-pdf-o'}
];
this.activeItem = this.items[2]
}
.html 文件:
<p-tabMenu [model]="items" [activeItem]="activeItem"></p-tabMenu>
我知道我可以在 activeItem 的帮助下设置 tabmenu
的 Active 项目,如下所示:
this.activeItem = this.items[2]
我现在的问题是我能否以某种方式在单击时检索 activeItem?例如
<p-tabMenu [model]="items" [activeItem]="activeItem" (click)="getActiveItem(...)"></p-tabMenu>
getActiveItem 方法:
getActiveItem(activeItem: MenuItem){
this.activeItem = activeItem;
console.log(activeItem);
return this.activeItem;
}
P.S 从 Primeng 到 TabMenu 的 link。 CLICK
只需将其作为参数传递给函数
(click)="getActiveItem(activeItem)"
您应该可以使用 command
,因为选项卡是 MenuModel API
的一部分
The function to invoke when an item is clicked is defined using the
command property.
this.items = [
...
{label: 'Pictures', icon: 'fa-file-pdf-o', command: (event) => {
//event.originalEvent: Browser event
//event.item: menuitem metadata
}}
];
我只是通过在引用菜单的模板中创建一个变量来解决它,然后将它传递给一个函数,在函数中你得到带有活动选项卡的对象。
<p-tabMenu #tab [model]="items" (click)="activateMenu(tab)"></p-tabMenu>
老问题,但可能需要解决方案。
最简单的方法是使用模板。
首先声明项目:
this.items = [
{label: 'Homework', icon: 'fa-file-pdf-o'},
{label: 'Movies', icon: 'fa-file-pdf-o'},
{label: 'Games', icon: 'fa-file-pdf-o'},
{label: 'Pictures', icon: 'fa-file-pdf-o'}
];
现在在您的 HTML 中:
<ng-template pTemplate="item" let-item let-i="index">
<div (click)="onTabItemClick(i)">
<span>
<i class="{{ item.icon }}"></i>
</span>
{{ item.label }}
</div>
</ng-template>
终于实现了一个基本的方法:
onTabItemClick(i: number) {
console.log(this.items[i])
}
点击时我们通过索引检索项目。
我有一个简单的 MenuItem 数组,用于填充来自 primeng 的 Tabmenu 组件。这看起来像这样:
.ts 文件:
items = MenuItem[];
activeItem = MenuItem;
//constructor etc...
ngOnInit() {
this.items = [
{label: 'Homework', icon: 'fa-file-pdf-o'},
{label: 'Movies', icon: 'fa-file-pdf-o'},
{label: 'Games', icon: 'fa-file-pdf-o'},
{label: 'Pictures', icon: 'fa-file-pdf-o'}
];
this.activeItem = this.items[2]
}
.html 文件:
<p-tabMenu [model]="items" [activeItem]="activeItem"></p-tabMenu>
我知道我可以在 activeItem 的帮助下设置 tabmenu
的 Active 项目,如下所示:
this.activeItem = this.items[2]
我现在的问题是我能否以某种方式在单击时检索 activeItem?例如
<p-tabMenu [model]="items" [activeItem]="activeItem" (click)="getActiveItem(...)"></p-tabMenu>
getActiveItem 方法:
getActiveItem(activeItem: MenuItem){
this.activeItem = activeItem;
console.log(activeItem);
return this.activeItem;
}
P.S 从 Primeng 到 TabMenu 的 link。 CLICK
只需将其作为参数传递给函数
(click)="getActiveItem(activeItem)"
您应该可以使用 command
,因为选项卡是 MenuModel API
The function to invoke when an item is clicked is defined using the command property.
this.items = [
...
{label: 'Pictures', icon: 'fa-file-pdf-o', command: (event) => {
//event.originalEvent: Browser event
//event.item: menuitem metadata
}}
];
我只是通过在引用菜单的模板中创建一个变量来解决它,然后将它传递给一个函数,在函数中你得到带有活动选项卡的对象。
<p-tabMenu #tab [model]="items" (click)="activateMenu(tab)"></p-tabMenu>
老问题,但可能需要解决方案。 最简单的方法是使用模板。 首先声明项目:
this.items = [
{label: 'Homework', icon: 'fa-file-pdf-o'},
{label: 'Movies', icon: 'fa-file-pdf-o'},
{label: 'Games', icon: 'fa-file-pdf-o'},
{label: 'Pictures', icon: 'fa-file-pdf-o'}
];
现在在您的 HTML 中:
<ng-template pTemplate="item" let-item let-i="index">
<div (click)="onTabItemClick(i)">
<span>
<i class="{{ item.icon }}"></i>
</span>
{{ item.label }}
</div>
</ng-template>
终于实现了一个基本的方法:
onTabItemClick(i: number) {
console.log(this.items[i])
}
点击时我们通过索引检索项目。