В классе компонента вы можете создать функциюvaluEvent, которая может регистрировать событие в зависимости от имени класса, назначенного вашему пункту меню.Добавьте ссылку на функциюvaluEvent события (click) и (mouseover) и передайте в событие $ и передайте className меню (предполагается, что вы добавляете другое имя className в свое меню в зависимости от компактной и широкой версии),
Вот фрагмент.(Я добавил кнопку для переключения компактной и широкой версии).События привязываются к кнопке HelloAngular js в зависимости от версии - компактная или широкая
ссылка на стек стека - https://stackblitz.com/edit/angular-vmpivu Файл -hello.component.ts
import { Component, Input } from '@angular/core';
@Component({
selector: 'hello',
template: `<button (click)="evaluateEvent($event,classType)"
(mouseover)="evaluateEvent($event,classType)"
[ngClass]="classType"> Hello {{name}}!</button><br/>
<br/>
<button (click)="toggleClass($event)">Toggle Class
({{this.classType}}--{{this.text}})</button>
`,
styles: [`h1 { font-family: Lato; }`]
})
export class HelloComponent {
@Input() name: string;
classType:String="compact";
text:String="mouseover bind";
toggleClass(ev)
{
if(this.classType==='compact'){this.classType=
'wide';this.text="click bind"}
else if(this.classType==='wide'){this.classType=
'compact';this.text="mouseover bind"}
}
compactHandler()
{
alert('Hi am a compact handler');
}
widehandler()
{
alert('Hi am a wide handler');
}
evaluateEvent(ev:any,classType){
if((ev.type==="click")&&(classType==="wide")){
return this.compactHandler();
}
else if((ev.type==="mouseover")&&(classType==="compact")){
return this.widehandler();
}
}
}