我想创建一个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是如何工作的。
答案 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
) { }
}