Angular 4に対応したモーダル・ポップアップを作成する方法
ラジオボタンが選択されると、あるAngular 4コンポーネントが読み込まれるポップアップウィンドウを作成したいと考えています。
この質問の回答に掲載されている方法は、Angular 2にしか対応していないようです。
どこから手をつけていいのかわからないので、助けていただければ幸いです。
19
2
ラジオボタンが選択されると、あるAngular 4コンポーネントが読み込まれるポップアップウィンドウを作成したいと考えています。
この質問の回答に掲載されている方法は、Angular 2にしか対応していないようです。
どこから手をつけていいのかわからないので、助けていただければ幸いです。
受け入れられた答えは、ハエを叩くために大きな依存性を追加します。 モーダルな(そしてモードレスな)ダイアログは、主にCSSクラス1つ2つの結果です。以下の "rename..."の例を試してみてください。
親 HTML で `` の子を使用します。
親クラスです。簡潔にするために
@Component
デコレーターは省略しています。(name
プロパティは親クラスに属しており、それを変更するフォームがなくても存在しています)。子のto-be-modalコンポーネント。また、
@Component
デコレーターとインポートは省略されています。モーダル化する前の子のHTML。
modal
という単一のクラスで、<div>
要素を対象としています。しかし、
modal
というCSSクラスは、その下にあるページとのインタラクションを妨げません。(そこで、モーダルの下にoverlay
を配置して、マウスの動きを吸収して無視するようにしています。overlay
は<div>
要素にも対応しています。modal
とoverlay
を子の HTML で使用します。以上で完成です。 基本的に2つのCSSクラスで、どんなコンポーネントでもモーダルにすることができます。 実際、CSSクラスの存在を
ngClass
や[class.modal]="showAsModalBoolean"
で変更するだけで、実行時にコンポーネントをインラインで表示したり、モーダルとして表示したりすることができます。これを変更することで、子プロセスが表示/非表示のロジックを制御することができます。*ngIf、showIt、show()関数を子に移動します。 親では、
@ViewChild(MyModalComponent) renameModal: MyModalComponent;
を追加して、親は、this.renameModal.show(this.name);
を命令的に呼び出し、必要に応じて初期化や包含するdivを再配線することができます。子モダールは上のように親の関数に情報を返すことができますし、子モダールの
show()
メソッドは代わりにコールバックを受け取ったり、好みに応じてPromiseを返したりすることができます。知っておくべきことが2つあります。
this.renameModal.show(...);
は、``に*ngIfが設定されていると動作しません。*ngIfはshow()関数を含むコンポーネント全体を削除するので、何らかの理由でこれが必要な場合は代わりに
[hidden]`を使用してください。モーダル上のモーダルは、すべて同じz-indexを共有しているため、z-indexの問題が発生します。これは、
[style.z-index]="calculatedValue"
などで解決できます。アンギュラー・マテリアル・ダイアログ]1を確認し、ここではプランカーを確認します。