In this article I'm going to show you guys, how we can open a Modal Popup in an Ionic Application and How we can pass values to that popup.
Lets start it with a Ionic Blank Application.
1 | Ionic start AppModal blank |
This is the current folder hierarchy.
Now lets add a text field and button to home screen. The text we enter to the text field will pass to the Modal Popup when we click the button. Lets add this simple html code to create the UI. I have button click event "onShowGreetingsClicked()" to open the popup.
home.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <ion-header> <ion-navbar> <ion-title> Easy Code Stuff </ion-title> </ion-navbar> </ion-header> <ion-content padding> <ion-item> <ion-label floating> First Name </ion-label> <ion-input type="text" [(ngModel)]="firstName"></ion-input> </ion-item> <ion-item> <ion-label floating> Last Name </ion-label> <ion-input type="text" [(ngModel)]="lastName"></ion-input> </ion-item> <ion-item> <button ion-button full color="primary" type="button" (click)="onShowGreetingsClicked()"> <ion-icon name="checkmark"></ion-icon> Show Greetings</button> </ion-item> </ion-content> |
home.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { firstName: string = ''; lastName: string = ''; constructor(public navCtrl: NavController) { } onShowGreetingsClicked(): void { console.log('clicked'); } } |
Lets see how out application looks like using below command.
1 | Ionic Serve |
Now lets add Page Called ModalGreeting using Ionic CLI.
1 | ionic generate page ModalGreeting --no-module |
Now this is the current folder hierarchy.
This is the sample code I'm getting it when I generate the page form Ionic CLI.
modal-greeting.html
1 2 3 4 5 6 7 8 9 10 11 | <ion-header> <ion-navbar> <ion-title>ModalGreeting</ion-title> </ion-navbar> </ion-header> <ion-content padding> </ion-content> |
modal-greeting.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; @Component({ selector: 'page-modal-greeting', templateUrl: 'modal-greeting.html', }) export class ModalGreetingPage { constructor(public navCtrl: NavController, public navParams: NavParams) { } ionViewDidLoad() { console.log('ionViewDidLoad ModalGreetingPage'); } } |
Now lets see how our final code looks like.
app-module.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import { BrowserModule } from '@angular/platform-browser'; import { ErrorHandler, NgModule } from '@angular/core'; import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular'; import { SplashScreen } from '@ionic-native/splash-screen'; import { StatusBar } from '@ionic-native/status-bar'; import { MyApp } from './app.component'; import { HomePage } from '../pages/home/home'; import { ModalGreetingPage } from '../pages/modal-greeting/modal-greeting'; @NgModule({ declarations: [ MyApp, HomePage, ModalGreetingPage ], imports: [ BrowserModule, IonicModule.forRoot(MyApp) ], bootstrap: [IonicApp], entryComponents: [ MyApp, HomePage, ModalGreetingPage ], providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler} ] }) export class AppModule {} |
home.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <ion-header> <ion-navbar> <ion-title> Easy Code Stuff </ion-title> </ion-navbar> </ion-header> <ion-content padding> <ion-item> <ion-label floating> First Name </ion-label> <ion-input type="text" [(ngModel)]="firstName"></ion-input> </ion-item> <ion-item> <ion-label floating> Last Name </ion-label> <ion-input type="text" [(ngModel)]="lastName"></ion-input> </ion-item> <ion-item> <button ion-button full color="primary" type="button" (click)="onShowGreetingsClicked()"> <ion-icon name="checkmark"></ion-icon> Show Greetings</button> </ion-item> </ion-content> |
home.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import { Component } from '@angular/core'; import { NavController, NavParams, ModalController } from "ionic-angular"; import { ModalGreetingPage } from '../modal-greeting/modal-greeting'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { firstName: string = ''; lastName: string = ''; constructor( public navCtrl: NavController, public navParams: NavParams, public modalCtrl: ModalController ) { } onShowGreetingsClicked(): void { let modal = this.modalCtrl.create(ModalGreetingPage, {firstName: this.firstName, lastName: this.lastName}); modal.present(); } } |
modal-greeting.html
1 2 3 4 5 6 7 8 9 10 11 | <ion-header> <ion-navbar> <ion-title>Easy Code Stuff Greeting</ion-title> </ion-navbar> </ion-header> <ion-content padding> Hello {{firstName}} {{lastName}} </ion-content> |
modal-greeting.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; @Component({ selector: 'page-modal-greeting', templateUrl: 'modal-greeting.html', }) export class ModalGreetingPage { firstName: string = ''; lastName: string = ''; constructor(public navCtrl: NavController, public navParams: NavParams) { this.firstName = navParams.get("firstName"); this.lastName = navParams.get("lastName"); } ionViewDidLoad() { console.log('ionViewDidLoad ModalGreetingPage'); } } |
Now lets see how our application looks like.
Hope you follow it up. See you again on next article.