【发布时间】:2018-12-18 16:49:57
【问题描述】:
我正在创建一个名为 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>
在结果 html 中添加了 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>
我尝试添加其他额外属性,但仍然不起作用。
【问题讨论】:
-
mattooltip 已经是指令了,为什么不能用呢? material.angular.io/components/tooltip/api
-
简而言之,这是行不通的,因为向元素添加属性与创建指令并将指令附加到元素不同。
标签: javascript angular angular-material angular-material2