Angular 作为动态组件的工具提示

Angular 作为动态组件的工具提示,angular,angular-directive,angular-dynamic-components,angular-renderer2,Angular,Angular Directive,Angular Dynamic Components,Angular Renderer2,我想将工具提示添加到svg元素,但作为动态创建的组件。我使用元素将工具提示添加到元素,即 <circle tooltip [hostContainerRef]="chartContainerRef" [hostElement]="">chartElement [data]="d.tooltip"></circle> 动态地在onMouseEnter方法中创建,并使用renderer和ElementRef设置它相对于svg图表中的宿主元素的位置。或者至少它应该这样做

我想将工具提示添加到svg元素,但作为动态创建的组件。我使用元素将工具提示添加到元素,即

<circle tooltip [hostContainerRef]="chartContainerRef" [hostElement]="">chartElement [data]="d.tooltip"></circle>
动态地在onMouseEnter方法中创建,并使用renderer和ElementRef设置它相对于svg图表中的宿主元素的位置。或者至少它应该这样做。问题是它没有,尽管设置了TooltipComponent的位置,但组件总是添加到错误的位置。工具提示应位于圆的旁边,而不是下方,如图所示:

为什么动态工具提示组件会忽略使用渲染器设置的样式选项?这是。其想法是将工具提示添加为组件,以避免svg的父元素溢出:隐藏设置。

tooltip.component.css

/* Add the following block */
:host {
  display: block;
  position: fixed;
}

.tooltip {
  display: block;
  /* Remove => position: absolute;*/
  font-size: 0.75em;
  background-color: black;
  opacity: 0.8;
  color: white;
  padding: 5px;
  border-style: solid;
  border-color: gray;
  border-width: 1px;
  border-radius: 2px;
}

哇,我还以为指令有问题呢!是否可以添加组件以避免溢出:隐藏父元素的网格项,例如,if const x=${relativeX-100}px``?我不知道是否有更简单的方法,但我想到了一个想法:将工具提示指令拆分为2。一个侦听鼠标事件,另一个执行工具提示渲染。在应用程序组件级别应用tooltip rendering指令,以便工具提示将相对于应用程序而不是svg组件进行呈现。tooltip指令可以通过服务将坐标发送到tooltip rendering指令。这只是一个想法,以防没有纯CSS解决方案。谢谢!我还可以设置溢出:可见;在这个虚拟示例中的gridster项上,但是CSS解决方案在我的产品代码上实际上是不可能的。对于任何在未来的ngx图表中遇到这个问题的人来说,工具提示的实现忽略了溢出,但使实现变得复杂。我将尝试看看我是否能实现您的解决方案,可能没有简单的方法来解决这个问题。