This class is visible to consumers via SomeModule -> SomeComponent, but is not exported from the top-level library entrypoint
This error happens if any component is exported in NgModule
and not included in your public_api.ts
, Angular 9
will throw an error now.
This error was not coming in Angular 8
but after upgrading to Angular 9
it started showing.
If you exported any service
, module
or component
, etc in NgModule
make sure to include them in public_api.ts
or else angular 9
will throw error now.
Fix: add your component to the public_api.ts
export * from './lib/components/some-me/some-me.component';
I was struggling with the same issue today.
My prerequisites:
- I work on an Angular 11 library type project;
- I have added a new directive;
- I got an error as above when tried to add my directive to module exports.
Fix:
- I have added file export to index.ts file:
export * from './just/a/relative/path/to/the/directive/{{myDirectiveFile}}';
This error will also happen when you are creating a Library and include a component incorrecty in the imports of the libary module.
import { NgModule } from '@angular/core';import { LibComponent } from './lib.component';import { ComponentWithinComponent } from './component-within/component-within.component'@NgModule({ declarations: [LibComponent, ComponentWithinComponent], imports: [ ComponentWithinComponent ], exports: [LibComponent, ComponentWithinComponent]})export class LibModule { }
ng build lib //results inError NG6002: Appears in the NgModule.imports of LibModule, but could not be resolved to an NgModule class.Is it missing an @NgModule annotation?8 export class ComponentWithinComponent implements OnInit {
The fix is to remove the ComponentWithinComponent import int he lib.module like this:
@NgModule({ declarations: [LibComponent, ComponentWithinComponent], imports: [ // don't import here ], exports: [LibComponent, ComponentWithinComponent]})export class LibModule { }