javascript - Angular 2 - 创建指令

标签 javascript angular angular6 angular-directive angular8

有一个下拉菜单工作正常现在我想让这个代码可重用,或者创建指令,因为现在在更多页面中添加了更多下拉菜单

我更喜欢制定指令,但我真的被困在这里

<div class="nav-item has-dropdown">
    <div class="menu-text" (click)="hasDropdown($event)">
        Click me
    </div>
    <div class="has-dropdown-view">
         Dropdown contenthere
    </div>
</div>


hasDropdown(event){
  let target = event.target || event.srcElement || event.currentTarget;
  this.dropownView = !this.dropownView;
  if( this.dropownView  ){
    target.closest('.has-dropdown').classList.add('has-open')
  }else{
    target.closest('.has-dropdown').classList.remove('has-open')
  }
};

stackblitz

如何用指令“method”实现这个点击功能?

最佳答案

我认为这可以解决您的问题:

   import { Directive,ElementRef, HostListener } from '@angular/core';


    @Directive({
        selector: '[hasDropdown]'
    })

    export class HasDropdownDirective {

    constructor(private el: ElementRef) {

        }
        @HostListener('click') onMouseClick() {

           //Place your code here
        }
    }

关于javascript - Angular 2 - 创建指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57143872/

相关文章:

javascript - 浏览器重启后sessionStorage不清除

javascript - 用于在 “=” 之后选择值的正则表达式

javascript - Angular Material : Cross-browser search input with clear button

angular - 在angular4中导入jquery

javascript - 插值不反射(reflect) Angular 应用程序中的最新值

angular - 如何在 Angular 6 中构建具有多个组件的表单?

angular - 什么相当于 Angular 6 中的 AngularJS ngcookies?

javascript - Drupal CiviCRM Javascript 冲突

angular - 如何将 *ngIf 值从一个组件传递到另一个组件?

javascript - 带 http 外部链接的 SSL 网站