禁用div中的所有按钮和链接

时间:2018-05-17 06:49:01

标签: angular angular5 angular2-directives angular-directive

我试图禁用div中的所有点击事件。我禁用了整个div,但它对我来说不是解决方案,因为我需要继续工作的mouseEnter事件。

问题在于它是我在我的应用程序的不同部分使用的指令,所以这个div有不同的结构,有时按钮是直接的孩子"有时它处于第二级。

那是我的尝试,它有效,但我发现它"脏":

<div #mydirective>
  <button (click)="function1()">button</button>
  <div>
    <a (click)="function2()">link</a>
  </div>
</div>

//directive ts
var children = this.element.nativeElement.children;
for (let child of children) {
  this.renderer.setAttribute(child, 'disabled', 'true'); //for button
  this.renderer.addClass(child, 'disabled'); //for links
  var grandchildren = child.children;
  for (let grandchild of grandchildren) {         
    this.renderer.setAttribute(grandchild, 'disabled', 'true');
    this.renderer.addClass(grandchild, 'disabled');
  }
}

我确定它应该更容易,有没有办法找到我的div中的所有按钮和链接?

1 个答案:

答案 0 :(得分:1)

如果要禁用所有鼠标点击..然后有条件地将css类添加到该div以禁用所有指针事件。

在html文件中。

<div class="your-class">
  // buttons and content goes here.
</div>

在css / scss文件中。

.your-class {
  pointer-events: none;
}