Angular CDK:将叠加层附加到单击的元素上

问题描述 投票:0回答:1

我正在尝试为表格单元格创建自定义弹出窗口,以便在单击它时以类似于mdBoostrap popovers的方式显示单元格的详细信息。

目前,我有以下应用:https://stackblitz.com/edit/angular-m5rx6j

Popup组件显示在主要组件下面,但是我想在表格上显示它,就在我单击的元素下面。

我想我需要执行以下操作:

  • 获取我单击的'td'的ElementRef->我不知道
  • 将覆盖层附加到此元素->已经这样做,但是使用了根元素
angular overlay angular-cdk
1个回答
0
投票

要获取元素的引用,可以使用模板标识符:#this_element

您可以直接使用组件模板中的值,或从@ViewChild / @ViewChildren中获取Typescript变量。

例如,在您的代码中:

<td #this_element>
  <div (click)="open(this_element)">Overlay Host1</div>
</td>

并且您的open函数现在将读取open(element: any),其中element的类型取决于您放置#this_element的位置。

而且您也可以通过以下方式在组件代码中保留此元素:

@ViewChild('this_element', { static: true }) element;

但是,如果您需要访问Angular docs,则nativeElement中会有一些警告,因此请注意,如果您在Web Worker中运行。在这种情况下,您可能想使用Renderer2

© www.soinside.com 2019 - 2024. All rights reserved.