我有一个自定义组件(MyComboBox),其中包含kendo-combobox
。
当我使用核心模块时,webpack
编译成功结束,但chrome抛出以下错误:
Uncaught Error: Unexpected directive 'MyComboBox' imported by the module 'AppModule'. Please add a @NgModule annotation.
下面是我的AppModule:
import { MyComboBox } from '@my/core/control/MyComboBox';
@NgModule({
declarations: [
AppComponent,
MyComboBox
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
DragulaModule,
MyComboBox,
CoreModule,
ComboBoxModule
],
entryComponents: [ MyComboBox ],
providers: [HelperService],
bootstrap: [AppComponent]
})
3条答案
按热度按时间ha5z0ras1#
编辑:
当我们没有正确地计算Angular 时,这个错误经常出现。
确保我们只应该
1.导入
modules
并且不导入components
或services
1.声明
components
,而不声明modules
或services
。1.提供
services
,不提供components
或modules
。原始答案:
你不必真的在你的App模块中导入
MyComboBox
。因为你已经在CoreModule
中导出了它。所以我建议你从AppModule
中的导入数组中删除MyComboBox
。导入CoreModule
会在AppModule
中给予你MyComboBox
组件。app.module.ts
注意:您不能像在那里那样随意导入组件。它必须包含在要导入的模块中。
hgc7kmma2#
在我的例子中,我错误地在
imports: []
数组中列出了组件,请注意,它需要的是模块,而不是组件,这就是Angular抱怨找不到@NgModule
定义的原因。相反,我需要在
declarations: []
列表中列出组件。:)vsnjm48y3#
如果你正在尝试创建自定义模块,需要这样做:
并在app.modules.ts中添加: