我可以在模块中声明指令并仅在该模块的组件中使用它吗?
Can I declare a directive within a module and use it only within components in that module?
我的 Angular (v7) 应用程序由几个模块组成。我有一个 AppModule
,其中包含应用程序的核心部分,以及几个提供应用程序很少使用的部分的独立模块。 (我 还没有 延迟加载这些其他模块,但将来可能会)。
在其中一个模块中(我们称之为 OtherModule
),我同时拥有组件和指令。这些指令 仅 由 OtherModule
中的组件使用。将这些指令的定义“封装”在 OtherModule
.
中(对我来说)是有意义的
但是,当我尝试使用来自 OtherModule
的组件之一时,如果该组件使用来自 OtherModule
:
的指令之一,我将收到错误消息
Property binding appOther not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the "@NgModule.declarations
(在本例中,appOther
是在 OtherModule
中定义的指令)。
您可以看到(或看不到)所有这一切in this StackBlitz。
我已经尝试在 AppModule
中声明该指令,但是 (a) 我真的不想用 OtherModule
工作原理的私人细节来污染该模块,并且 (b) 它然后抱怨该指令被声明了两次。
我在这里做错了什么?这似乎是一个显而易见的要求(如果这种关注点分离是不可能的,那我们为什么要有模块呢?)。
看看你的实现我认为你必须删除 de * 和 ="true" 并只留下选择器 appOther
就这样:
<p appOther>
模块声明没问题,你在 OtherModule 中正确声明了指令而不是导出它们,你不能在 AppModule 中也声明它。如果在其他情况下你想共享该指令,你应该在共享模块中声明它
我的 Angular (v7) 应用程序由几个模块组成。我有一个 AppModule
,其中包含应用程序的核心部分,以及几个提供应用程序很少使用的部分的独立模块。 (我 还没有 延迟加载这些其他模块,但将来可能会)。
在其中一个模块中(我们称之为 OtherModule
),我同时拥有组件和指令。这些指令 仅 由 OtherModule
中的组件使用。将这些指令的定义“封装”在 OtherModule
.
但是,当我尝试使用来自 OtherModule
的组件之一时,如果该组件使用来自 OtherModule
:
Property binding appOther not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the "@NgModule.declarations
(在本例中,appOther
是在 OtherModule
中定义的指令)。
您可以看到(或看不到)所有这一切in this StackBlitz。
我已经尝试在 AppModule
中声明该指令,但是 (a) 我真的不想用 OtherModule
工作原理的私人细节来污染该模块,并且 (b) 它然后抱怨该指令被声明了两次。
我在这里做错了什么?这似乎是一个显而易见的要求(如果这种关注点分离是不可能的,那我们为什么要有模块呢?)。
看看你的实现我认为你必须删除 de * 和 ="true" 并只留下选择器 appOther
就这样:
<p appOther>
模块声明没问题,你在 OtherModule 中正确声明了指令而不是导出它们,你不能在 AppModule 中也声明它。如果在其他情况下你想共享该指令,你应该在共享模块中声明它