Событие клика 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 отключены. Событие клика на вкладке вызывает метод и отображает diff pdf в пользовательском интерфейсе.

Проблема связана с этим событием щелчка, которое также запускается для отключенных кнопок. Несмотря на то, что вкладки BBB, CCC отключены, я могу щелкнуть вкладку, но активный элемент на вкладке № сохраняется из того, что было ранее активным, поэтому я не могу остановить распространение события. Скажем, когда страница загружается, по умолчанию используется вкладка AAA. Теперь, несмотря на то, что BBB отключен, я могу щелкнуть вкладку «BBB», и когда я распечатаю в активный элемент в метке и идентификаторе показывает вкладку AAA. Может кто-нибудь предложить мне, как предотвратить щелчок для отключенных вкладок, пожалуйста?

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!");
}

Посмотреть демо

Другие вопросы по тегам