如何通过Angular中的自定义指令添加mattooltip

雷扎

我正在创建一个名为TooltipDirective的自定义指令,whihc会将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>

在结果htmltooltipmattooltip属性中添加了内容,但未显示工具提示。

和呈现的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>

我尝试添加其他额外属性,但仍然无法正常工作。

雷扎

其他答案和评论是正确的,顺便说一句,我终于做到了,它正在工作

import { Directive, ElementRef, Inject, Input, NgZone, Optional, ViewContainerRef } from '@angular/core';
import
{
    MAT_TOOLTIP_DEFAULT_OPTIONS,
    MAT_TOOLTIP_SCROLL_STRATEGY,
    MatTooltip,
    MatTooltipDefaultOptions
} from '@angular/material';
import { AriaDescriber, FocusMonitor } from '../../../../../node_modules/@angular/cdk/a11y';
import { Directionality } from '../../../../../node_modules/@angular/cdk/bidi';
import { Overlay, ScrollDispatcher } from '../../../../../node_modules/@angular/cdk/overlay';
import { Platform } from '../../../../../node_modules/@angular/cdk/platform';

@Directive({
    selector: '[tooltip]',
    exportAs: 'tooltip'
})
export class TooltipDirective extends MatTooltip
{
    @Input()
    get tooltip()
    {
        return this.message;
    }
    set tooltip(value: string)
    {
        this.message = value;
    }

    constructor(
        _overlay: Overlay,
        _elementRef: ElementRef,
        _scrollDispatcher: ScrollDispatcher,
        _viewContainerRef: ViewContainerRef,
        _ngZone: NgZone,
        _platform: Platform,
        _ariaDescriber: AriaDescriber,
        _focusMonitor: FocusMonitor,
        @Inject(MAT_TOOLTIP_SCROLL_STRATEGY) _scrollStrategy: any,
        @Optional() _dir: Directionality,
        @Optional() @Inject(MAT_TOOLTIP_DEFAULT_OPTIONS)
        _defaultOptions: MatTooltipDefaultOptions)
    {
        super(
            _overlay,
            _elementRef,
            _scrollDispatcher,
            _viewContainerRef,
            _ngZone,
            _platform,
            _ariaDescriber,
            _focusMonitor,
            _scrollStrategy,
            _dir,
            _defaultOptions
        );
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在通过单例解决的查询中添加自定义指令

如何通过Angular中的$ resource从自定义指令发送输入值?

无法通过自定义指令以编程方式启用和禁用 matTooltip

如何在angular中创建自定义指令

如何在angular js中实现自定义指令?

如何将自定义指令属性传递给Angular 1.5中的自定义指令子元素?

自定义指令中的Angular UI指令

自定义指令无法通过SSL Angular解决

通过现有功能在Angular 7中创建用于验证的自定义指令?

自定义 Angular 材质 mattooltip 和格式数据以显示在工具提示中

如何通过 ng-click 在自定义指令中打开 mdDialog?

自定义的角度指令以在间隔中添加/删除类

在Angular中的自定义指令中侦听鼠标事件

如何在 ANGULAR 8 中双向绑定自定义指令?

如何在自定义Angular指令中更改ng-model范围值?

如何在Angular 2.0中创建自定义验证指令(即验证属性)?

如何正确将函数传递给Angular2 / Typescript中的自定义指令?

从输入的自定义指令中,如何使父表单无效?

如何在自定义指令中获取评估的属性

如何在自定义指令中检索ngmodel值

如何在自定义指令中获取$ routeParams

如何在自定义VueJS指令中声明变量?

如何在自定义刀片指令中传递参数?

如何在Angular中为自定义验证器添加自定义验证错误消息

Angular JS reset自定义指令

离子自定义指令被Angular忽略

angular 2自定义指令OnInit

Angular自定义指令未被调用

如何添加由Angular4中的某些用户输入定义的自定义CSS?