html - angular 8 material dialog stängningsknapp med X uppe till höger
Jag försöker få min materialdialog att ha en X-knapp uppe till höger, men jag har problem med positioneringen.
komponent.ts
this.d.open(loginComponent, {
width: '300px',
height: '',
panelClass: 'dialogC',
});
komponent.html
<mat-dialog-content>
<button mat-button class="close-icon" [mat-dialog-close]="true">
<mat-icon>close</mat-icon>
</button>
<h2 mat-dialog-title>Login</h2>
style.scss
.dialogC {
position: relative !important;
}
.close-icon {
position: absolute;
top: 0;
right: 0;
transform: translate(50%, -50%);
}
X är bara justerad till vänster istället för högst upp till höger. Förslag?
Uppdatering, detta är problemet jag får efter att ha lagt till flex:
Svar #1
Det enkla sättet nu är:
<div mat-dialog-title class="dialog-title">
<h2>Title</h2>
<button mat-icon-button aria-label="close dialog" mat-dialog-close>
<mat-icon>close</mat-icon>
</button>
</div>
Och dialogtitel-css är
.dialog-title {
display: flex;
justify-content: space-between;
align-items: center;
}
Det fungerar på Angular 8.0.0
Svar #2
<button class="close" mat-button (click)="onNoClick()">X</button>
<h1 mat-dialog-title>Login</h1>
<div mat-dialog-content>
...
...
</div>
CSS: (Vänligen ange det globalt (styles.css) eller ange ViewEncapsulation.NONE annars kommer dessa stilar inte att påverka.)
.cdk-overlay-pane.my-dialog {
position: relative!important;
}
.close.mat-button {
position: absolute;
top: 0;
right: 0;
padding: 5px;
line-height: 14px;
min-width: auto;
}
Observera att vi nu i CSS har en ny klass från ingenstans .my-dialog
Så, var god nämn det som panelClass i dialogRef enligt nedan,
this.dialog.open(DialogComponent, {
width: '250px',
panelClass: 'my-dialog',
..
..
Det ger mig följande resultat,
Svar #3
När du använder mat-icon-button är det bara nödvändigt att lägga till stilen nedan på knappen.
.close-button{
float: right;
top:-24px;
right:-24px;
}
Funktionellt exempel:
stackblitz

