我在网上找到了一个 Tooltip 指令的示例。我需要扩展它,以便我可以将数据传递给工具提示并在 *ngFor 中呈现它。到目前为止我有
app.component.html
<div tooltipDirective [tooltipDataArray]="['Person1', 'Person2']">See tooltip!
<ng-template #tooltipTemplate>
<div class="tooltip">
This is my tooltip!
</div>
</ng-template>
</div>
工具提示.directive.ts
@Input() tooltipDataArray: string[];
@ContentChild( "tooltipTemplate" ) private tooltipTemplateRef: TemplateRef<Object>;
@HostListener('mouseenter') onMouseEnter(): void {
console.log(this.tooltipDataArray);
const view = this.viewContainerRef.createEmbeddedView(this.tooltipTemplateRef);
view.rootNodes.forEach(node =>
this.renderer.appendChild(this.elementRef.nativeElement, node));
}
@HostListener('mouseleave') onMouseLeave(): void {
if (this.viewContainerRef) {
this.viewContainerRef.clear();
}
}
我可以记录数据以便接收它,但我不确定 createEmbeddView、rootNodes 和 appendchild 是如何工作的(我正在从一个示例中工作)。我想要的是包含 Person1、Person2 的工具提示。我怎样才能做到这一点?
编辑:
我认为尝试这样做会让我更接近我想要的并更好地解释它,但现在工具提示根本没有显示。这是正确的方法吗?
<div tooltipDirective [tooltipDataArray]="['Person1', 'Person2']">See tooltip!
<ng-template #tooltipTemplate>
<div class="tooltip" *ngFor="let person of tooltipDataArray">
{{ person }}
</div>
</ng-template>
</div>