Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ionic 4 Angular: Uncaught ReferenceError: dismissModal is not defined at HTMLElement.onclick (BUT function IS defined!)

Error: Uncaught ReferenceError: dismissModal is not defined at HTMLElement.onclick

Match-Summary-Modal.component.html

<ion-header translucent>
  <ion-toolbar>
    <ion-title>Match Summary</ion-title>
    <ion-buttons slot="end">
      <ion-button onclick="dismissModal()">Return to Queue Page</ion-button>
    </ion-buttons>
  </ion-toolbar>
</ion-header>
<ion-content>
  <ion-card>
    <ion-card-content>This match you had a score of {{score}}</ion-card-content>
    <ion-card-content>And a place of {{place}} out of {{playerCount}} players</ion-card-content>
  </ion-card>
</ion-content>

Match-Summary-Modal.component.ts

import { Component, OnInit, Input} from '@angular/core';
import { ModalController } from '@ionic/angular';

@Component({
  selector: 'app-match-summary-modal',
  templateUrl: './match-summary-modal.component.html',
  styleUrls: ['./match-summary-modal.component.scss'],
})
export class MatchSummaryModalComponent implements OnInit {
  @Input() score: number;
  @Input() place: number;
  @Input() playerCount: number;


  constructor(private modalController: ModalController) {

   }

  ngOnInit() {}

  async dismissModal() {
    this.modalController.dismiss()
  }

}

GameNetworkService.ts (somewhere within the service, with modalController injected)

this.lobbyServerSocket.on('match-summary', async (summarydata) => {
        let modal = await this.modalController.create({
          component: MatchSummaryModalComponent,
          componentProps: {
            score: summarydata.score,
            place: summarydata.place,
            playerCount: summarydata.playerCount
          }
        })
        await modal.present()
        this.lobbyServerSocket.disconnect(true)
        this.lobbyServerSocket = null;
      })

Question When dismissModal() is clearly defined within MatchSummaryModal, why is angular/ionic unable to find the dismissModal() method that is quite clearly called & contained within the component when the button is clicked?

Additionally, what do I need to do to get the intended functionality? (Which is to make the modal dismiss itself on button click)

Thank you!

like image 491
Michael Heyn Avatar asked Jul 11 '26 19:07

Michael Heyn


1 Answers

It should be

<ion-button (click)="dismissModal()">Return to Queue Page</ion-button>

instead of

<ion-button onclick="dismissModal()">Return to Queue Page</ion-button>
like image 63
igor_c Avatar answered Jul 13 '26 11:07

igor_c