HiveBrain v1.2.0
Get Started
← Back to all entries
patterntypescriptangularCriticalCanonical

If '<selector>' is an Angular component, then verify that it is part of this module

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
angularmoduleverifycomponentpartthisthatselectorthen

Problem

I am new in Angular2. I have tried to create a component but showing an error.

This is the app.component.ts file.

import { Component } from '@angular/core';
import { MyComponentComponent } from './my-component.component';

@Component({
  selector: 'my-app',
  template: `
    Hello {{name}}
    Something
    
  `,
  directives: [MyComponentComponent]
})
export class AppComponent { name = 'Sam' }


This is the component which i want to create.

import { Component } from '@angular/core';

@Component({
selector: 'my-component',
template: `
    This is my article
`
})

export class MyComponentComponent {

}


Showing the two errors:

  • If my-component is an Angular component, then verify that it is part of this module.



  • If my-component is a Web Component then add CUSTOM_ELEMENTS_SCHEMA to the @NgModule.schemas of this component to suppress this message.



Please Help.

Solution

Your MyComponentComponent should be in MyComponentModule.

And in MyComponentModule, you should place the MyComponentComponent inside the "exports".

Something like this, see code below.

@NgModule({
   imports: [],
   exports: [MyComponentComponent],
   declarations: [MyComponentComponent],
   providers: [],
})

export class MyComponentModule {
}


and place the MyComponentModule in the imports in app.module.ts like this (see code below).

import { MyComponentModule } from 'your/file/path';

@NgModule({
   imports: [MyComponentModule]
   declarations: [AppComponent],
   providers: [],
   bootstrap: [AppComponent]
})

export class AppModule {}


After doing so, the selector of your component can now be recognized by the app.

You can learn more about it here: https://angular-2-training-book.rangle.io/handout/modules/feature-modules.html

Code Snippets

@NgModule({
   imports: [],
   exports: [MyComponentComponent],
   declarations: [MyComponentComponent],
   providers: [],
})

export class MyComponentModule {
}
import { MyComponentModule } from 'your/file/path';

@NgModule({
   imports: [MyComponentModule]
   declarations: [AppComponent],
   providers: [],
   bootstrap: [AppComponent]
})

export class AppModule {}

Context

Stack Overflow Q#43937387, score: 298

Revisions (0)

No revisions yet.