ionic4 angular7 共通コンポーネントを作成する手順
今回やりたかったことは以下のようなこと
tabsテンプレートで作成したプロジェクトでtab2とtab3で共通の<app-my-custom>というタグをを呼び出したかった
とりあえずプロジェクトを作成してコンポーネントをつくる
$ ionic start component_test tabs $ ionic g c components/my-custom --nospec
components.module.ts をつくってコンポーネントを登録する。declationsとexportsに追加
components/components.module.ts
import { NgModule } from '@angular/core'; import { MyCustomComponent } from './my-custom/my-custom.component'; @NgModule({ declarations: [ MyCustomComponent ], imports: [ ], entryComponents: [ ], exports: [ MyCustomComponent ] }) export class ComponentsModule {}
app.module.tsにcomponents.moduleを登録する
app.module.ts
・・・ import { ComponentsModule } from './components/components.module'; @NgModule({ ・・・ imports: [ BrowserModule, IonicModule.forRoot(), AppRoutingModule, ComponentsModule // ★追加! ], ・・・ }) export class AppModule {}
pageからコンポーネントを呼び出す
tab2/tab2.module.ts
・・・ import { ComponentsModule } from '../components/components.module'; @NgModule({ imports: [ ・・・ ComponentsModule // ★追加! ], declarations: [Tab2Page] }) export class Tab2PageModule {}
tab3もおなじ
おまけ
コンポーネントから別のコンポーネントを呼び出してみる
$ ionic g c components/your-custom --nospec
作成したコンポーネントをmy-customのときと同様にcomponents.module.tsに登録
components/components.module.ts
import { NgModule } from '@angular/core'; import { MyCustomComponent } from './my-custom/my-custom.component'; import { YourCustomComponent } from './your-custom/your-custom.component'; @NgModule({ declarations: [ MyCustomComponent, YourCustomComponent ], imports: [ ], entryComponents: [ ], exports: [ MyCustomComponent, YourCustomComponent ] }) export class ComponentsModule {}
components/my-custom/my-custom.component.html
<p> my-custom works! <app-your-custom></app-your-custom> </p>
あとは呼び出すだけでOK。以上です