Angular2マテリアルチームは最近、MDDialogをリリースしました https://github.com/angular/material2/blob/master/src/lib/dialog/README.md
Angle2マテリアルのダイアログの見た目と雰囲気を変更したいと思います。たとえば、ポップアップコンテナの固定サイズを変更してスクロール可能にするには、背景色を変更します。そうするための最良の方法は何ですか?一緒に遊ぶことができるCSSはありますか?
開発ツールを使用してダイアログ要素を調べ、mdDialogで適用されているクラスを確認できます。
例えば、 .md-dialog-container
はMDDialogのメインクラスであり、パディングがあります:24px
必要なものを上書きするカスタムCSSを作成できます
.md-dialog-container { background-color: #000; width: 250px; height: 250px }
私の意見では、これは良い選択肢ではなく、おそらくマテリアルガイドに反しますが、以前のバージョンにあるすべての機能を備えていないため、自分にとって最適だと思うことを行うべきです。
md-dialog-content
のコンテンツは自動的にスクロール可能です。
MdDialog.open
への呼び出しでサイズを手動で設定できます
let dialogRef = dialog.open(MyComponent, {
height: '400px',
width: '600px',
});
スクロールとサイズ変更の詳細なドキュメント/例: https://material.angular.io/components/dialog/overview
一部の色は、テーマによって決定する必要があります。テーマのドキュメントについては、こちらをご覧ください: https://material.angular.io/guide/theming
色などをオーバーライドする場合は、適切なcssを追加するだけのElmerの手法を使用してください。
ダイアログのサイズがコンテンツに正しく収まるように、ページにHTML 5 <!DOCTYPE html>
が必要であることに注意してください( https://github.com/angular/material2/issues/2351 )
angular materialでMdDialogコンポーネントのサイズを変更するために使用できる2つの方法があります
1)ダイアログコンポーネントを呼び出す外部コンポーネントから
import { MdDialog, MdDialogConfig, MdDialogRef } from '@angular/material';
dialogRef: MdDialogRef <any> ;
constructor(public dialog: MdDialog) { }
openDialog() {
this.dialogRef = this.dialog.open(TestTemplateComponent, {
height: '40%',
width: '60%'
});
this.dialogRef.afterClosed().subscribe(result => {
this.dialogRef = null;
});
}
2)Inside Dialogコンポーネントから。サイズを動的に変更する
import { MdDialog, MdDialogConfig, MdDialogRef } from '@angular/material';
constructor(public dialogRef: MdDialogRef<any>) { }
ngOnInit() {
this.dialogRef.updateSize('80%', '80%');
}
ダイアログコンポーネントの任意の関数でupdateSize()を使用します。ダイアログのサイズが自動的に変更されます。
詳細については、このリンクを確認してください https://material.angular.io/components/component/dialog
現在のバージョンのAngular Material(6.4.7)では、カスタムクラスを使用できます。
let dialogRef = dialog.open(UserProfileComponent, {
panelClass: 'my-class'
});
次に、クラスをグローバルな場所に配置します(この機能を他の場所で動作させることができませんでした)。 styles.css
:
.my-class .mat-dialog-container{
height: 400px;
width: 600px;
border-radius: 10px;
background: lightcyan;
color: #039be5;
}
できた!
この投稿のAngularの最新バージョンでは、TypeScriptは2番目のパラメータをMatDialogConfigタイプです。
const matDialogConfig = new MatDialogConfig();
matDialogConfig.width = "600px";
matDialogConfig.height = "480px";
this.dialog.open(MyDialogComponent, matDialogConfig);
CSSではモーダルクラスが表示されない可能性があるため、/deep/
を使用する必要があると思います。たとえば、.modal-dialog
をカスタマイズする場合
/deep/.modal-dialog {
width: 75% !important;
}
しかし、このコードはすべてのモーダルウィンドウを変更します。より良い解決策は
:Host {
/deep/.modal-dialog {
width: 75% !important;
}
}
マットダイアログの最新情報を共有するには、これを達成する2つの方法があります。
let dialogRef = dialog.open(NwasNtdSelectorComponent, { data: { title: "NWAS NTD" }, width: '600px', height: '600px', panelClass: 'epsSelectorPanel' });
または2)panelClassを使用し、それに応じてスタイルを設定します。
1)最も簡単ですが、2)より良く、より設定可能です。
これは私のために働いた:
dialogRef.updateSize("300px", "300px");