Я хотел бы заменить следующий оператор jquery на стороне клиента на angular (7.x):
//dropdown on hover in jquery
if($('.navbar').width() > 1007)
{
$('.nav .dropdown').hover(function() {
$(this).addClass('open');
},
function() {
$(this).removeClass('open');
});
}
К настоящему времени я временно использовал ElementRef и Renderer2 вместе с соответствующими (мышью ...) - Eventlisteners. Я мог бы перенести эту логику также в директиву с Hostlistener ...
//element-wise angular code
<li #drop class="dropdown singleDro" (mouseover)="openDropDown($event)" (mouseleave)="closeDropDown($event)">
<a href="javascript:void(0)"
class="dropdown-toggle"
data-toggle="dropdown"
role="button"
aria-haspopup="true"
aria-expanded="false">
<i class="fa fa-list-ul icon-dash" aria-hidden="true"></i> Listings <i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul class="dropdown-menu">
<li><a [routerLink]="['/dashboard/shop/add']">Add Shop</a></li>
<li><a [routerLink]="['/dashboard/shop/view']">My Shops</a></li>
</ul>
</li>
//component code
openDropDown(event: Event) {
if (this.navbarDash.nativeElement.offsetWidth > 1007) {
this.renderer.addClass(this.drop.nativeElement, 'open');
}
}
closeDropDown(event: Event) {
this.renderer.removeClass(this.drop.nativeElement, 'open');
}
... но я ищу более целостное решение, которое имеет такой же эффект, как и решение jquery. Я бы предпочел какое-то решение на уровне приложения, которое можно распространить на всех детей ...
Не могли бы вы дать мне подсказку, какая концепция может помочь в достижении описанного.
Спасибо
Таймень