角6:给定ElementRef,我可以得到ViewContainerRef

时间:2018-08-07 14:20:55

标签: angular

模板

<div my-directive></div>

指令

constructor(vc: ViewContainerRef, el: ElementRef, svc: MyService) {}

useService() {
  this.svc.doWork(vc, el);
}

因此该服务既需要ViewContainerRef也需要ElementRef。我是否都必须通过?有没有一种方法可以从元素ref派生视图容器?如果是这样,我只需要将ElementRef传递给服务,它将从中获取视图容器。

或者,ElementRef可以从ViewContainerRef派生吗?因为我假设一个视图容器可以包含多个元素,所以这似乎是不可能的。

1 个答案:

答案 0 :(得分:2)

您可以从视图中使用元素引用。它们都引用相同的DOM元素。

constructor(vc: ViewContainerRef, el: ElementRef, svc: MyService) {
     console.log(vc.element.nativeElement === el.nativeElement);
     // prints true
     this.svc.doWork(vc, vc.element);
}