Событие клика PrimeNG tabMenu должно быть отключено для отключенных вкладок
У меня проблема с PrimeNG
Скажем, например, у меня есть tabMenu с 4 вкладками -> AAA, BBB, CCC, DDD.
Вот как элементы меню настраиваются в компоненте ts.
//....
invDocs: InventoryDocs[] = [];
invMenu: InventoryDocs[] = [];
this.invMenu = this.data.cdMenu;
this.invDoc = this.data.cdDocs;
this.menuItems = [];
if(this.invMenu != null && this.invMenu.length > 1){
this.showMenu = true;
for (let i = 0; i < this.invMenu.length; i++) {
this.menuItems.push({label: this.invMenu[i].fileDescr, id: this.invMenu[i].menuId, disabled: this.invMenu[i].subCount > 0});
this.activeItem = this.menuItems[0];
}
this.currentPdf = this.invDoc.docBlob;
}
activateMenu(tab){
console.log(tab);
this.invDocId = tab.activeItem.id;
this.showMenu = true;
this.retriveCurrentPdf(this.invDocId);
}
.....//
пробное значение нажато:
this.menuItems.push({lable: 'AAA', id: 1, disabled: false});
this.menuItems.push({lable: 'BBB', id: 1, disabled: true});
this.menuItems.push({lable: 'CCC', id: 1, disabled: true});
this.menuItems.push({lable: 'DDD', id: 1, disabled: false});
По умолчанию «ААА» активен.
мой компонент html выглядит следующим образом:
<div style="width: 3em;">
<p-tabMenu #tab [model]="menuItems" [activeItem]="activeItem" (click)="activateMenu(tab)" class="customWrapper" ></p-tabMenu>
</div>
Страница отображается с 4 вкладками, где AAA и DDD включены, а BBB, CCC отключены. Событие клика на вкладке вызывает
Проблема связана с этим событием щелчка, которое также запускается для отключенных кнопок. Несмотря на то, что вкладки BBB, CCC отключены, я могу щелкнуть вкладку, но активный элемент на вкладке № сохраняется из того, что было ранее активным, поэтому я не могу остановить распространение события. Скажем, когда страница загружается, по умолчанию используется вкладка AAA. Теперь, несмотря на то, что BBB отключен, я могу щелкнуть вкладку «BBB», и когда я распечатаю
1 ответ
Я думаю, вам лучше использовать
command
функция, которая является частью
MenuItem
. Эта функция будет запускаться при нажатии, только если вкладка не отключена.
this.items = [
{
label: "Home",
icon: "pi pi-fw pi-home",
command: event => {
this.activateMenu(event);
}
},
{
label: "Edit",
icon: "pi pi-fw pi-pencil",
disabled: true,
command: event => {
this.activateMenu(event); // this one won't be triggered because tab is disabled
}
}
]
activateMenu(event) {
console.log("click on " + event.item.label + " tab!");
}
Посмотреть демо