我正在创建一个名为TooltipDirective的自定义指令,它将向每个宿主元素添加matTooltip,代码如下所示
import { Directive, ElementRef, Input, OnInit, Renderer } from '@angular/core';
@Directive({
selector: '[tooltip]'
})
export class TooltipDirective implements OnInit
{
@Input() tooltip: string;
constructor(private hostElement: ElementRef, private renderer: Renderer)
{
}
ngOnInit()
{
this.renderer.setElementAttribute(this.hostElement.nativeElement, 'matTooltip', this.tooltip);
}
}
在我的html我有两个元素比较的结果
<i class="material-icons" tooltip="Test Tooltip">reply_all</i>
<i class="material-icons" matTooltip="Test Tooltip">reply_all</i>
在结果中,添加了tooltip
和mattooltip
属性,但没有显示工具提示。
而呈现的html就像下面
<i _ngcontent-c10="" class="material-icons" tooltip="Test Tooltip" mattooltip="Test Tooltip" ng-reflect-tooltip="Test Tooltip">reply_all</i>
<i _ngcontent-c10="" class="material-icons" mattooltip="Test Tooltip" aria-describedby="cdk-describedby-message-1" cdk-describedby-host="" ng-reflect-message="Test Tooltip">reply_all</i>
我尝试添加其他额外的属性,但仍然不起作用。
4条答案
按热度按时间kgqe7b3p1#
其他的答案和评论都是正确的,顺便说一句,最后我做了这样的,它的工作
brccelvz2#
这对我很有效。在我的情况下,我需要有一些检查之前,显示'鼠标悬停'事件的工具提示。
7cwmlq893#
在Angular中没有办法做到这一点。关注this,所以如果Angular的人开始做有意义的工作,他们可能会这样做。
你的另一个选择是为这种情况创建一个动态组件,这对这种小事情很糟糕。我不确定,但它可能会打破你的AOT。
rxztt3cl4#
这个对我有用
然后,如果你想覆盖其他东西,如禁用状态: