page example change angular ionic2 ionic3

example - router events angular 6



Componente personalizado en viĆ³nico v3. (6)

Aquí está mi módulo. Espero que te ayude a responder tu pregunta:

@NgModule({ declarations: [ TestPage ], imports: [ IonicPageModule.forChild(TestPage), TranslateModule.forChild(), PipesModule, NavigatorComponentModule ], exports: [ EntriesPage, ], providers:[ NavigatorComponent ] })

Quería crear un componente simple e incluirlo en una página. Lo creé con el ionic g component my-header (ionic-cli v3 beta), arreglé el error IonicPageModule y luego lo añadí a otra página. Entonces me sale este error:

Error: Uncaught (in promise): Error: Template parse errors: ''my-header'' is not a known element: 1. If ''my-header'' is an Angular component, then verify that it is part of this module. 2. If ''my-header'' is a Web Component then add ''CUSTOM_ELEMENTS_SCHEMA'' to the ''@NgModule.schemas'' of this component to suppress this message.

El "MyHeaderComponent" se agregó a las declaraciones de @NgModule automáticamente.

Gracias por tu ayuda.

EDITAR:

El componente se encuentra dentro de mi carpeta de components :

componentes / my-header / my-header.html

<div> {{text}} </div>

componentes / my-header / my-header.module.ts

import { NgModule } from ''@angular/core''; import { IonicModule } from ''ionic-angular''; import { MyHeaderComponent } from ''./my-header''; @NgModule({ declarations: [ MyHeaderComponent, ], imports: [ IonicModule, ], exports: [ MyHeaderComponent ], entryComponents:[ MyHeaderComponent ] }) export class MyHeaderComponentModule {}

componentes / my-header / my-header.scss

my-header {}

componentes / my-header / my-header.ts

import { Component } from ''@angular/core''; @Component({ selector: ''my-header'', templateUrl: ''my-header.html'' }) export class MyHeaderComponent { text: string; constructor() { console.log(''Hello MyHeaderComponent Component''); this.text = ''Hello World''; } }

app / app.module.ts

/* imports */ import { MyHeaderComponent } from ''../components/my-header/my-header''; @NgModule({ declarations: [ MyApp, MyHeaderComponent ], ...

pages / home / home.html


Dado que ionic 3 admite la carga diferida, no necesita importar su componente personalizado en la aplicación. archivo module.ts. En su lugar, puede importarlo en el archivo module.ts de una página específica. Por ejemplo: si desea utilizar su componente personalizado en su página de inicio, simplemente puede importarlo en su archivo home.module.ts como se indica a continuación:

import { NgModule } from ''@angular/core''; import { IonicPageModule } from ''ionic-angular''; import { HomePage } from ''./home''; import { MyHeaderComponent }from ''../../components/myheader/myheader''; @NgModule({ declarations: [ HomePage, MyHeaderComponent ], imports: [ IonicPageModule.forChild(HomePage), ], exports: [ HomePage, ] }) export class HomePageModule { }

Sin embargo, no olvide eliminar su importación y declaraciones del archivo app.module.ts, que se agrega automáticamente al crear su componente personalizado.


Debe importar el componente en el módulo. Asegúrese de que también exporta ese componente.

@NgModule({ imports: [ IonicModule, ], declarations:[ MyHeaderComponent ], exports:[ MyHeaderComponent ], entryComponents:[ MyHeaderComponent ] })


No es necesario importar MyHeaderComponent en ngModule.

Debe importar MyHeaderComponentModule en el módulo de su página donde desee usar esto.

imports: [ MyHeaderComponentModule, ],


Solo para aclarar: estoy usando un componente navigator personalizado en muchas páginas (componente reutilizable).

import { NgModule } from ''@angular/core''; import { IonicPageModule } from ''ionic-angular''; import { TranslateModule } from ''@ngx-translate/core''; import { PipesModule } from ''../../pipes/PipesModule''; import { NavigatorComponent } from ''../../components/navigator/navigator''; import { ComponentsModule } from ''../../components/components.module''; import { NavigatorComponentModule } from ''../../components/navigator/navigator.module''; @NgModule({ declarations: [ TestPage, ], imports: [ IonicPageModule.forChild(EntriesPage), TranslateModule.forChild(), PipesModule, NavigatorComponentModule ], exports: [ TestPage, ], providers:[ NavigatorComponent ] }) export class TestPageModule {}

Nota: el navigatorComponent tiene 4 archivos: ts, css, html y yourcomponentname.module.ts. El comando "componente g iónico" no genera el último archivo (yourcomponentname.module.ts). Así que lo hice.


Respuesta tardía para el hilo, pero estoy seguro de que hay más personas que pueden usar esta información explicada desde otra perspectiva.

En Ionic, los componentes angulares personalizados se organizan bajo un módulo separado llamado ComponentsModule . Cuando el primer componente se genera utilizando ionic generate component , junto con el componente, ionic genera el ComponentsModule . Cualquier componente posterior se agrega al mismo módulo, con razón.

Aquí hay una muestra de ComponentsModule

import { NgModule } from ''@angular/core''; import { CustomAngularComponent } from ''./custom/custom-angular-component''; import { IonicModule } from ''ionic-angular''; @NgModule({ declarations: [CustomAngularComponent], imports: [IonicModule], exports: [CustomAngularComponent], entryComponents:[ ] }) export class ComponentsModule {}

Para usar el ComponentsModule en la aplicación, como cualquier otro módulo angular, los ComponentsModules deben importarse al AppModule . El componente generador iónico (v 4.12) no agrega este paso, por lo que debe agregarse manualmente.

Extracto de AppModule:

@NgModule({ declarations: [ //declaration ], imports: [ //other modules ComponentsModule, ], bootstrap: [IonicApp], entryComponents: [ //ionic pages ], providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler}, //other providers ] }) export class AppModule {}