Ionic 4 从另一个模态中打开模态:modal.create() 不是函数

Ant*_*iry 4 typescript ionic-framework angular ionic4

我正在尝试从另一个模态对话框中打开一个模态对话框,通过在网络上搜索,我可以看到人们以前没有问题地做过它,但我似乎无法让它工作。

当我尝试从第一个模态组件创建我的第二个模态组件时,它说:

类型错误:this.modal.create 不是函数

这是我的代码(用相关部分修剪)。

组件.module.ts

@NgModule({
  declarations: [
    QuizResultComponent,
    AnswerRecapComponent
  ],
  imports: [CommonModule, FormsModule, IonicModule, FontAwesomeModule],
  exports: [
    QuizResultComponent,
    AnswerRecapComponent
  ],
  entryComponents: [
    QuizResultComponent,
    AnswerRecapComponent
  ]
})
export class ComponentsModule {}
Run Code Online (Sandbox Code Playgroud)

这是我打开第一个模态的方式: Exam.page.ts

... 
export class ExamPage implements OnInit {

    ...

    constructor(
        private router: Router,
        private modal: ModalController
    ) {}

    ...

    async openModal(){
        // Creating the result modal
        const modal = await this.modal.create({
        component: QuizResultComponent,
        componentProps: {
            type: 'exam'
        }
        });

        // Registering back to menu event after dismiss
        modal.onDidDismiss().then(_ => this.router.navigate(['/menu']));

        // Showing modal
        return await modal.present();
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

这是quiz-result.component.ts中抛出异常的第二个模式。

... 
export class QuizResultComponent implements OnInit {

    ...

    constructor(
    private modal: ModalController,
    private navParams: NavParams
  ) {}

    ...

    async openAnswerRecap(q) {
        const modal = await this.modal.create({ // This line throws the exception.
            component: AnswerRecapComponent,
            componentProps: {
                question: q.question
            }
        });

        return await modal.present();
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

我真的没有看到这段代码有任何问题,是否有什么东西阻止我从另一个模态组件打开模态?

小智 6

就我而言,我在构造函数上的第二个模态控制器上创建了不同的名称,例如:

第一个模态:构造函数(私有模态:ModalController)第二个模态:构造函数(私有_modal:ModalController)

并在您的模块 entryPoint 中添加 2 个模态。