Reputation: 760
I am new to ionic, it seems like a silly question but I need some help Using some simple button is throwing error. I am using ionic 4.0.
'ion-button' is not a known element: 1. If 'ion-button' is an Angular component, then verify that it is part of this module. 2. If 'ion-button' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
<ion-button color="primary">Primary</ion-button>
Upvotes: 27
Views: 64598
Reputation: 2305
I was having this problem in a library that I was building
because I forgot to export the module of that was importing the IonicModule
and exporting my component.
So, in my module was importing Ionic lib and exporting my component as below.
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { IonicModule } from '@ionic/angular';
import { MyComponent } from './my.component';
@NgModule({
declarations: [
MyComponent,
],
imports: [
CommonModule,
IonicModule,
],
exports: [
MyComponent,
],
})
export class MyModule {
}
And in the public-api.ts
file of my lib, I should have something like this
export { MyModule } from './lib/my.module'; // <--- exporting my module
export { MyComponent } from './lib/my.component';
Upvotes: 3
Reputation: 364
Import your custom component in the parent module. for example in your app.module.ts:
declarations: [MyComponent],
exports: [
PopoverComponent,
]
Upvotes: 4
Reputation: 11
In Ionic 5, I have a same problem when I build with --prod option.
Since *.module.ts file is not available in components in Ionic 5, I need to add shared module for components and then add CUSTOM_ELEMENTS_SCHEMA schema to that shared module.
ionic g module modules/shared
cat shared.module
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FooComponent } from '../../components/foo/foocomponent.component'; <== Add your components
@NgModule({
declarations: [FooComponent], <== Add your components
imports: [
CommonModule
],
exports: [FooComponent], <== Add your components
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class SharedModule { }
Upvotes: 1
Reputation: 1533
My issue was that there were errors prior to this error that seemed to cascade down. The error I had was some elements in the declarations that should have been in the providers. Also, one of these was marked private in the constructor when it should have been public.
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
RouterModule.forChild([{ path: '', component: DevicesPage }]),
DevicesPageRoutingModule,
TranslateModule.forChild()
],
declarations: [DevicesPage --> remove BLE, LocationAccuracy, DeviceManagerService ],
providers: [BLE, LocationAccuracy, DeviceManagerService] <--Add
})
Upvotes: 0
Reputation: 1
Should add in app.module.ts
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
providers: [
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
schemas: [CUSTOM_ELEMENTS_SCHEMA] ==> add line**
Upvotes: -1
Reputation: 613
I think the solution is importing Ionic module in the respective module imports
import { IonicModule } from '@ionic/angular'; <--add this line
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule, <-- add this line
],
})
Upvotes: 36
Reputation:
I faced similar issue after ionic 4, So I added the CUSTOM_ELEMENTS_SCHEMA in app.modules.ts. Then it worked fine
app.module.ts
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
SpineRestServiceProvider,
FingerprintAIO
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
Upvotes: -1
Reputation: 1258
It seems you are not importing the ionicModule
in the component module. So, Import the IonicModule
in the module.ts, rest of the things will work fine
Upvotes: 4
Reputation: 402
In order to avoid that error message:
import { ErrorHandler, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
HttpClientModule,
MomentModule,
IonicModule.forRoot(MyApp),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
Upvotes: 26
Reputation: 352
I was stuck on this for a little while as well until I realized that the problem was I did not create the Ionic Angular project properly. you have to include --type=angular
https://github.com/ionic-team/ionic-cli
exp: ionic start myApp tabs --type=angular
Upvotes: -1
Reputation: 631
I've run into this too. Your solution is not the best one as the new Ionic 4 way is to use <ion-button>
(https://beta.ionicframework.com/docs/components/#button).
It does work for me fine in a page I have under /src/app/my-page/my-page.html
, but when I put it in /src/shared/components/my-comp/my-comp.html
it gives the error. The odd thing is that I have other Ionic elements in the same page <ion-grid>
, <ion-row>
and <ion-col>
. Also, this code used to be in my-page.html
where it worked without error.
FYI, MyComponent
is in components.module.ts
as a declaration
and an export
. Not sure yet what I am missing...
UPDATE 1: Neither moving the components
directory under src
nor under src/app
made any difference.
UPDATE 2: This is my environment:
ionic (Ionic CLI) : 4.0.6
Ionic Framework : @ionic/angular 4.0.0-beta.2
@angular-devkit/core : 0.7.2
@angular-devkit/schematics : 0.7.2
@angular/cli : 6.1.2
@ionic/ng-toolkit : 1.0.0
@ionic/schematics-angular : 1.0.1
UPDATE 3: Still broken in this environment:
ionic (Ionic CLI) : 4.1.0
Ionic Framework : @ionic/angular 4.0.0-beta.3
@angular-devkit/core : 0.7.2
@angular-devkit/schematics : 0.7.2
@angular/cli : 6.1.2
@ionic/ng-toolkit : 1.0.6
@ionic/schematics-angular : 1.0.5
UPDATE 4: After much trial and error, I had to add schemas: [CUSTOM_ELEMENTS_SCHEMA]
to my components.module.ts
file. I was able to leave the directory structure as-is. I'm not sure why this is required for this scenario, though.
Upvotes: 5
Reputation: 103
yes try this
<button ion-button color="primary">Primary</button>
Upvotes: 1
Reputation: 1046
Try this,
<button ion-button color="primary">Primary</button>
Upvotes: 24