ホームページにポップオーバーを作成しようとしています。次の機能を作成しました。
public presentPopover(myEvent) {
let popover = this.popoverCtrl.create(TestComponent);
popover.present({
ev: myEvent
});
}
私のhomepage.module.tsでは、エントリコンポーネントとしてtestComponentを追加しました。
import { TestModule } from './../../components/test/test.module';
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { HomePage } from './home';
import { TestComponent } from './../../components/test/test';
@NgModule({
declarations: [
HomePage,
],
imports: [
TestModule,
IonicPageModule.forChild(HomePage),
],
entryComponents: [
TestComponent,
]
})
しかし、ポップオーバーボタンをクリックすると、このエラーが表示されます。
ERROR Error: Uncaught (in promise): Error: No component factory found for TestComponent. Did you add it to @NgModule.entryComponents?
Error: No component factory found for TestComponent. Did you add it to @NgModule.entryComponents?
at noComponentFactoryError (core.js:3786)
at CodegenComponentFactoryResolver.resolveComponentFactory (core.js:3850)
at PopoverCmp._load (popover-component.js:41)
at PopoverCmp.ionViewPreLoad (popover-component.js:33)
そして、なぜこれをエントリコンポーネントに追加する必要があるのか混乱していますか?
@NgModule内のエントリコンポーネントに動的に作成されたコンポーネントを追加する必要があります
@NgModule({
...
declarations: [
...
Name of your component,
],
entryComponents: [
...
Name of your component,
]
})
注:回避策としてapp.module(ルート)に配置するため、遅延ロードされたモジュールの下のエントリコンポーネントが機能しない場合があります