【发布时间】: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。
<mat-icon #icoTooltip="matTooltip" ...>有效,我们之前一直在使用它。 -
angular 无法理解 mat-icon 中的#icoTooltip="amgTooltip",因为 mat-icon 没有 amgTooltip,那么您的意思是什么?
-
@ABOS - 抱歉,我以为你写了
<amgTooltip>我已将amgTooltip属性添加到<mat-icon ...>元素中,并且错误消失了。谢谢。 -
虚拟异常,没问题
标签: angular angular-material angular-directive