Tengo un componente personalizado (MyComboBox) que tiene kendo-combobox dentro.
Cuando uso mi módulo principal, la compilación webpack finaliza correctamente, pero Chrome arroja el siguiente error:
Uncaught Error: Unexpected directive 'MyComboBox' imported by the module 'AppModule'. Please add a @NgModule annotation.Aquí está mi módulo de aplicación :
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] })EDITAR :
Este error aparece con frecuencia cuando no estamos importing , providing o declaring correctamente los modules , services y components angulares.
Asegúrese de que sólo debemos
modules y NO los components o servicescomponents y NO los modules o services .services y NO components o modules .Respuesta original:
Realmente no tiene que importar MyComboBox en su módulo de aplicación. Como ya lo has exportado en CoreModule . Por lo tanto, le sugiero que elimine MyComboBox de su matriz de importaciones en AppModule . Importar CoreModule le dará el componente MyComboBox dentro de AppModule .
aplicación.módulo.ts
@NgModule({ declarations: [ AppComponent, MyComboBox ], imports: [ BrowserModule, FormsModule, HttpModule, DragulaModule, CoreModule ], // viewProviders: [ DragulaService ], providers: [HelperService], bootstrap: [AppComponent] })Nota: no puede importar componentes libremente como lo está haciendo allí. Tiene que estar contenido dentro del módulo que se va a importar.
En mi caso, estaba enumerando por error el componente en imports: [] array, que, fíjate, espera módulos, no componentes, y esa es la razón por la que Angular se quejó de que no podía encontrar la definición de @NgModule .
En cambio, necesitaba enumerar el componente en las declarations: [] lista. :)