クロスプラットフォーム対応のモバイルアプリ開発フレームワークであるIonic2の使い方を紹介していきます。
今回はアプリ上でアラートのダイアログを表示する方法について解説します。
なお、本稿で載せる画像は全てMaterialDesignのスタイルです。iOSでは異なる見た目になる点にご注意下さい。
使い方
Ionic2にはAlertControllerというモジュールがあるのでこれを使ってアラートを表示します。
AlertControllerを使うには、アラートを表示したいページ(コンポーネント)でAlertControllerモジュールをimportし、コンストラクタの引数に指定します。
これでAngularのDependencyInjectionの仕組みによりAlertControllerのインスタンスにアクセスできるようになります。
1 2 3 4 5 6 7 8 9 10 11 12 | import { Component } from '@angular/core' ; import { NavController, AlertController } from 'ionic-angular' ; @Component({ selector: 'page-home' , templateUrl: 'home.html' }) export class HomePage { constructor(public navCtrl: NavController, private alertCtrl: AlertController) { } } |
上の下準備ができたらアラートを表示するメソッドを定義しましょう。
AlertController#createによりAlertオブジェクトが得られるので、Alert#presentでアラートを表示できます。
1 2 3 4 5 6 7 8 9 10 11 12 | export class HomePage { ... presentBasicAlert() { let alert = this .alertCtrl.create({ title: 'エラー' , subTitle: '通信エラーが発生しました' , buttons: [ 'OK' ] }); alert.present(); } } |
createの引数オブジェクトのキーに使えるもののうち主に使うのは以下になります。
title | タイトル |
subTitle | サブタイトル |
message | 表示するメッセージ |
inputs | 入力領域の設定 |
buttons | 表示するボタンの設定 |
入力ダイアログ
例えばログイン等、ユーザーに入力をしてもらいたい場面で表示するダイアログもAlertControllerを使って作成できます。
inputsキーに入力領域を指定します。typeにはpassword、tel、email、url、number等が指定できます。
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 34 35 36 37 | export class HomePage { ... presentPromptAlert() { let alert = this .alertCtrl.create({ title: 'ログイン' , inputs: [ { name: 'userId' , placeholder: 'ユーザーID' }, { name: 'password' , placeholder: 'パスワード' , type: 'password' } ], buttons: [ { text: 'キャンセル' , role: 'cancel' , handler: data => { } }, { text: 'ログイン' , handler: data => { if (data.userId && data.password) { //ログイン処理 } } } ] }); alert.present(); } } |
上記の例のようにbuttonsキーには配列で複数のボタンを指定することができます。
handlerにはそのボタンがクリック(タップ)された時の処理を記述します。
また、roleに’cancel’を指定すると、アラートを閉じる用のキャンセルボタンになります。
ラジオ
inputのtypeにradioを指定することでラジオボタンを載せたアラートを表示できます。
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 | export class HomePage { ... presentRadioAlert() { let radioOptions = []; for ( let i = 1; i < 5; i++) { radioOptions.push({type: 'radio' , label: `選択肢 ${i}`, value: i, checked: false }); } let alert = this .alertCtrl.create({ title: 'ラジオ' , inputs: radioOptions, buttons: [ { text: 'キャンセル' , role: 'cancel' , handler: data => { } }, { text: 'OK' , handler: data => { } } ] }); alert.present(); } } |
OKボタンのhandlerの引数には選択したラジオのvalueの値が入ってきます。
チェックボックス
inputのtypeにcheckboxを指定することでチェックボックスを載せたアラートを表示できます。
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 | export class HomePage { ... presentCheckboxAlert() { let checkOptions = []; for ( let i = 1; i < 5; i++) { checkOptions.push({type: 'checkbox' , label: `選択肢 ${i}`, value: i, checked: false }); } let alert = this .alertCtrl.create({ title: 'チェックボックス' , inputs: checkOptions, buttons: [ { text: 'キャンセル' , role: 'cancel' , handler: data => { } }, { text: 'OK' , handler: data => { } } ] }); alert.present(); } } |
OKボタンのhandlerの引数にはチェックを入れた選択肢のvalueの値が配列で入ってきます。
以上がIonicアプリケーションで各種アラートを表示する方法になります。