【问题标题】:There is no directive with "exportAs" set to "amgTooltip"没有将“exportAs”设置为“amgTooltip”的指令
【发布时间】:2019-06-19 12:56:05
【问题描述】:

我创建了一个从 Angular Material 的 MatTooltip 继承的指令。我知道this SO question 可以做到这一点。 但是,当我尝试使用它时,出现以下错误:

There is no directive with "exportAs" set to "amgTooltip"

这是指令中的代码,其中包含一个构造函数,该构造函数调用 super 上的构造函数。为了简洁起见,下面的代码中没有显示。

如您所见,指令配置对象的 exportAs 属性为“amgTooltip”。

@Directive({
  selector: '[amgTooltip]',
  exportAs: 'amgTooltip'
})
export class AmgTooltipDirective extends MatTooltip {

    constructor(...) {...}

}

这个指令被注册到一个指令模块类中:

import {NgModule} from '@angular/core';
import {AmgTooltipDirective} from './amg-tooltip';

@NgModule({
  imports: [],
  declarations: [AmgTooltipDirective],
  exports: [AmgTooltipDirective]
})
export class DirectivesModule {

}

这个模块被我们的功能模块在imports 部分引用:

@NgModule({
  declarations: [...],
  imports: [
    ...,
    DirectivesModule
  ],
  bootstrap: [...]
})

从那里,我们引用 amgTooltip 的方式与引用 matTooltip 的方式完全相同:

<mat-icon 
    #icoTooltip="amgTooltip" 
    matTooltip="Tooltip Text"
    matTooltipPosition="after">
        icon_name
</mat-icon>

但是,这是我们得到错误的地方,不能再进一步了。如果需要,我可以尝试创建 Plunkr,但我目前没有。

我犯了什么愚蠢的错误?谢谢

【问题讨论】:

  • 不应该将此#icoTooltip="amgTooltip" 应用于<... amgtooltip ...>吗?
  • 不,记住我要做的只是扩展 matTooltip。 &lt;mat-icon #icoTooltip="matTooltip" ...&gt; 有效,我们之前一直在使用它。
  • angular 无法理解 mat-icon 中的#icoTooltip="amgTooltip",因为 mat-icon 没有 amgTooltip,那么您的意思是什么?
  • @ABOS - 抱歉,我以为你写了&lt;amgTooltip&gt; 我已将amgTooltip 属性添加到&lt;mat-icon ...&gt; 元素中,并且错误消失了。谢谢。
  • 虚拟异常,没问题

标签: angular angular-material angular-directive


【解决方案1】:

amgTooltip 添加到mat-icon 元素有效。

<mat-icon 
    amgTooltip
    #icoTooltip="amgTooltip" 
    matTooltip="Tooltip Text"
    matTooltipPosition="after">
        icon_name
</mat-icon>

【讨论】:

  • 我遇到同样的错误没有将“exportAs”设置为“mdbTable”的指令运气好? @虚拟异常
猜你喜欢
  • 2018-08-05
  • 2018-07-12
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
相关资源
最近更新 更多