【发布时间】:2019-04-18 17:46:31
【问题描述】:
我的 Angular (v7) 应用由几个模块组成。我有一个AppModule,其中包含应用程序的核心部分,以及几个提供应用程序很少使用的部分的单独模块。 (我还没有懒惰地加载这些其他模块,但将来可能会这样做)。
在这些模块之一(我们称之为OtherModule)中,我既有组件又有指令。这些指令仅被OtherModule 中的组件使用。 (对我而言)将这些指令的定义“封装”在OtherModule 中是有意义的。
但是,当我尝试使用来自 OtherModule 的组件之一时,如果该组件使用来自 OtherModule 的指令之一,我会收到错误消息:
属性绑定 appOther 未被嵌入模板上的任何指令使用。确保属性名称拼写正确,并且所有指令都列在“@NgModule.declarations
(在本例中,appOther 是在OtherModule 中定义的指令)。
in this StackBlitzin this StackBlitz.
我尝试在 AppModule 中声明该指令,但是 (a) 我真的不想用 OtherModule 工作方式的私人细节来污染该模块,并且 (b) 然后它抱怨该指令是声明了两次。
我在这里做错了什么?这似乎是一个显而易见的要求(如果这种关注点分离是不可能的,那我们为什么还要有模块呢?)。
【问题讨论】:
-
它似乎与
<p appOther>一起工作(在删除*之后)。见this stackblitz。 -
@ConnorsFan:我看起来 像它工作,但实际上发生的所有事情是它不再将属性识别为指令。尝试将指令名称更改为 spellingMistake ,这对您的 stackblitz 没有任何影响。
-
再次尝试 stackblitz。我不知道是什么让你认为它不起作用,因为原始指令什么也没做。
-
@JanRecker:我不确定这是写给我还是给 ConnorsFan。我知道这一点 - 事实上,我基本上遵循了在此处创建结构指令的建议:angular.io/guide/… 使用星号的地方。
-
@ConnorsFan:哇。我很高兴(也很感激)你让它工作了,虽然我不知道为什么。玩你的堆栈闪电战,似乎你可以包含或不包含星号,包含或不包含值但不能同时包含,这就是我所拥有的。诡异的。无论如何,它似乎与模块无关,这是我认为问题所在。感谢您的帮助。
标签: angular angular-directive angular-module