首页 > 解决方案 > 如何在服务可用的所有模块(页面)中都可用的服务中实现 Ionic 模式?

问题描述

我有一个 AppModule 的辅助模块,在这种情况下,它称为 DriverModule,在该模块中,我在提供程序数组中添加了 DriversService 服务。在 DriversModule 中,我有使用惰性模块收费的子路由。

该服务在 DirverModule 下的所有页面中运行良好。

我的问题是,当我尝试将模式放入在 DriversModule 的所有子页面上运行的该服务中时,我收到此错误:

ERROR Error: Uncaught (in promise): Error: No component factory found for ServiceOfferingComponent. Did you add it to @NgModule.entryComponents?
Error: No component factory found for ServiceOfferingComponent. Did you add it to @NgModule.entryComponents?
    at noComponentFactoryError 

即使我已经将组件放在声明和 entryComponents 数组中。

import { ServiceOfferingComponent } from './service-offering/service-offering.component';

@NgModule({
  declarations: [
    ServiceOfferingComponent
  ],
  imports: [
    RouterModule.forChild(routes)
  ],
  providers: [
    DriverService,
  ],
  entryComponents: [
    ServiceOfferingComponent
  ]
})
export class DriverModule { }

import { ServiceOfferingComponent } from './service-offering/service-offering.component';


import { ModalController } from '@ionic/angular';

@Injectable()
export class DriverService {

constructor(
    public modalController: ModalController
  ) { 
    someObservable$.subscription((val:boolean) =>{
        if(val) this.showServiceOfferingModal();
    });
 }

async showServiceOfferingModal() {
    const modal = await this.modalController.create({
      component: ServiceOfferingComponent,
      backdropDismiss: false
    });
    await modal.present();
  }

}

我的假设是,如果该服务在 DriversModule 的所有子路由中运行良好,我可以在当前子页面上显示模式,无论我正在浏览 DriversModule 的哪个子页面,只要该服务可用。但显然,这种假设是不正确的。

您知道将模态放入服务中的任何技术,并且当出现条件时,将模态呈现在用户正在浏览的页面上,无论它是哪个页面,只要它是 DriversModule 的子页面?

标签: javascriptangularionic-frameworkionic4angular8

解决方案


推荐阅读