Angular2反向指令查找

时间:2016-08-09 18:53:37

标签: angular angular2-directives

有没有办法只根据对DOM元素的引用来查找指令实例?

在Angular1.x中,您可以通过使用JQLite's "Controller" function来实现这样的行为,实际返回控制器(甚至基于可选的类型参数)。

更具体地说,我希望能够使用document.elementFromPoint()按位置识别元素并检索属于哪个Directive 实例 ...

亲切的问候

1 个答案:

答案 0 :(得分:0)

您可以使用@ViewChild()

<my-comp #someRef someDirective></my-comp>

...
export class MyComponent {
  @ViewChild('someRef', {read: SomeDirective}) someRef:SomeDirective;

  ngAfterViewInit() {
    console.log(this.someRef);
  }
}

默认情况下,@ViewChild()为纯HTML标记或组件的组件实例返回ElementRef。使用{read: SomeType},您可以指定要从@ViewChild()返回的内容。

您也可以使用exportAs之类的

@Directive({
  selector: 'my-dir',
  ...
  exportAs: 'myDirective'
})
class MyDirective {
}

然后像

一样使用它
<my-comp my-dir #someRef="myDirective">

然后使用

在组件中获取它
@ViewChild('someRef') someRef:MyDirective;