我的Angular(v7)应用包含几个模块。我有一个AppModule
,其中包含应用程序的核心部分,以及几个单独的模块,这些模块提供了应用程序很少使用的部分。 (我还没有延迟加载其他模块,但将来可能会加载)。
在这些模块之一(我们称其为OtherModule
)中,我同时具有组件和指令。 OtherModule
中的组件仅使用 指令。对我来说,将这些指令的定义“封装”在OtherModule
中是很有意义的。
但是,当我尝试使用OtherModule
中的一个组件时,如果该组件使用OtherModule
中的一个指令,则会出现错误:
属性绑定appOther嵌入式模板上的任何指令均未使用。确保属性名称拼写正确,并且所有指令均列在“ @ NgModule.declarations
”中
(在此示例中,appOther
是OtherModule
中定义的指令)。
您可以看到(或没有)in this StackBlitz上的所有操作。
我尝试在AppModule
中声明该指令,但是(a)我真的不想用OtherModule
的工作细节来污染该模块,并且(b)然后抱怨该指令被声明两次。
我在这里做错了什么?这似乎是一个显而易见的要求(如果不可能将关注点分离,那么为什么我们要有模块呢?)。
答案 0 :(得分:1)
看看您的实现,我认为您必须删除de *和=“ true”并仅保留选择器appOther
就是这样:
<p appOther>
模块声明没问题,您正在正确地在OtherModule中声明该指令,而不是将其导出,因此您也无法在AppModule中对其进行声明。如果在其他情况下您想共享该指令,则应在共享模块中声明该指令