我想将元素引用传递给指令。我知道可以通过以下方式获取已对其应用指令的元素的引用:

private _elemRef: ElementRef

但我想将对其他元素的引用传递给指令。任何帮助表示赞赏。

这是演示代码。我正在使用ripple指令。

<ul #other>
  <li ripple>Hello</li>
</ul>

指令.js
@Directive({
  selector: '[ripple]'
})
export class RippleDirective {
  constructor(private _elemRef: ElementRef) {
  }

  @HostListener('click', ['$event'])
  public onClick(event: MouseEvent) {
    // I wan't to refer the '#other' node here
}
}

最佳答案

您可以将模板变量#other传递给@Input():

@Directive({
  selector: '[ripple]'
})
export class RippleDirective {
  @Input() ripple;

  @HostListener('click', ['$event'])
  public onClick(event: MouseEvent) {
    this.ripple...
  }
}
<ul #other>
  <li [ripple]="other">Hello</li>
</ul>

关于javascript - 将元素引用传递给指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38837328/

10-11 12:53