2017-01-17 11 views
0

スタートアップやその他のロジックがアタッチされており、アプリ内の複数の場所で再利用したいというアラートがあります。Ionic2でカスタム再利用可能なアラート(またはモーダル)コンポーネント

私が気に入らない私の現在の解決策は、建設時にアラートを作成して提示するコンポーネントがあるということです。 警告が表示されるようにするには、新しいコンポーネントをスタックにプッシュする必要があります。その結果、警告が表示されます。アラートキャンセルまたはアクションでは、新しいコンポーネントがスタックからポップされ、以前のビューに戻ります。

問題は、警告の前に白い画面が表示されて消えるため、警告が実際に正しい表示の上に表示されていないことです。

これを行うより良い方法はありますか?

答えて

2

サービスを作成し、アラートを使用するコンポーネントにそのサービスをインポートする必要があります。これは最近、Ionic2アプリケーションでこれを行いました。このようなものはうまくいくはずです。

import { Injectable, Inject } from '@angular/core'; 
import { AlertController } from 'ionic-angular'; 

@Injectable() 
export class AlertLoader { 

    constructor(public alertCtrl: AlertController){} 

    complexAlert(title, subTitle, buttonObj){ 
    let Alert = this.alertCtrl.create({ 
    title: title, 
    subTitle: subTitle, 
    buttons: buttonObj 
    }) 
    console.log(Alert); 
    Alert.present(); 
    } 

} 

このコンポーネントをコンポーネントで使用するには、そのコンポーネントをインポートして呼び出します。あなたのコンストラクタにそれを追加することを忘れないでください!

this.alertLoader.complexAlert('Title', 'subtitle', buttonObj) 

あなたが他の場所で警告を使用したい場合、それは一定であるか、別のファイルに含めて、それをインポートします場合は、その情報をハードコードすることができます。

希望すると便利です。

+0

興味深い...これはUXの観点から私が欲しいものを達成するだろうと思うが、もっと良い方法があるのだろうかと思う。カスタムアラート/モーダルのサービスを要求することは、最良の設計選択肢のようには見えません。 –

+1

参照する一般的なサービスファイルがあるかもしれません。そのファイルに含めるとインポートを最小限に抑えることができますが、多目的にするための簡単な方法を発見できません。あなたが見つけたら、私が見ることができるようにここに投稿してください! :) –

+0

サービスレイヤーがビューレイヤーとやり取りしてはならない理由として、推論でここでは別のソリューションが提案されています。https://forum.ionicframework.com/t/creat-custom-reusable-alert-or-modal-component/76539/2 –

関連する問題