【问题标题】:Angular directive selector do not work on element inside external libraryAngular 指令选择器不适用于外部库中的元素
【发布时间】:2019-09-06 10:07:27
【问题描述】:

在我的模块中,我用选择器声明了一个 Angular 指令:

@Directive({
  selector: 'input'
})

虽然它也将应用于在外部模块中声明的组件模板中的输入元素,我在声明我的指令的同一模块中导入。

所以在我的应用中我有这样的东西:

<my-library-component [(ngModel)]="myModel"></my-library-component>

my-library-component 的模板呈现输入。 在我的模块中,我正在导入声明和导出 my-library-component 的模块。

这是预期的行为吗?

谢谢

【问题讨论】:

  • 如果你想使用你的指令,你必须先导入它(imports 或 delcares)。在外部模块中也必须这样做。

标签: angular directive


【解决方案1】:

这确实是预期的行为,因为在外部模块中,您只能使用在此模块中声明的组件(或组件,它带有模块,外部模块导入)

【讨论】:

  • 即使我正在导入一个声明并导出其所有组件的外部模块? (包括我的库组件)
  • 我的理解是,您想在my-library-component 中使用您的指令。如果这是真的,那么声明 my-library-component 的模块需要声明指令本身,或者需要从另一个模块导入指令
  • 我想我可以声明一个带有像'input'这样的宽范围选择器的指令,我希望这个指令将应用于所有输入,包括在组件模板中找到的输入(如 my- library-component) 的外部模块。
  • 情况并非如此,组件/指令/管道仅在声明模块内可见(并且,如果它们被导出,也在导入其模块的模块内)
  • 在我的模块中我已经声明了一个指令,并且我正在导入一个导出组件 my-library-component 的外部模块......所以我仍然认为应该应用该指令也到 my-library-component,因为它是在同一个模块中导入的,指令 id 声明:D
猜你喜欢
  • 2021-03-25
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 2015-03-07
  • 2016-03-15
  • 1970-01-01
  • 2012-05-10
相关资源
最近更新 更多