如何使用Angular2指令注入DOM元素?

时间:2017-02-07 09:53:57

标签: javascript angular

我想创建一个Angular2指令,以便在用户将鼠标悬停在列表项上时显示工具提示。

Angular2文档看起来像这样:

@Directive({ selector: '[myUnless]' })
export class UnlessDirective {
  constructor(
    private templateRef: TemplateRef<any>,
    private viewContainer: ViewContainerRef
    ) { }
    this.viewContainer.createEmbeddedView(this.templateRef);
  }
}

如何创建新模板并注入viewContainer?例如,像这样的模板:

<div class="tooltip">Some inner tooltip text</div>

我已经看过使用动态组件加载器的示例,但不确定howit是如何工作的。

1 个答案:

答案 0 :(得分:1)

@Directive({ selector: '[tooltip]' })
export class TooltipDirective {

  @HostListener('mouseenter') onMouseenter() {
    const factory = this.resolver.resolveComponentFactory(ExampleCompoent);

    this.viewContainerRef.createComponent(factory);
  }

  constructor(
    private viewContainerRef: ViewContainerRef,
    private resolver: ComponentFactoryResolver
  ) { }
}