• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

677
Views
botón de cierre de diálogo de material angular 8 con X arriba a la derecha

Estoy intentando que mi cuadro de diálogo de material tenga un botón X en la parte superior derecha, pero tengo problemas con el posicionamiento.

componente.ts

 this.d.open(loginComponent, { width: '300px', height: '', panelClass: 'dialogC', });

componente.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>

estilo.scss

 .dialogC { position: relative !important; } .close-icon { position: absolute; top: 0; right: 0; transform: translate(50%, -50%); }

La X está alineada a la izquierda en lugar de arriba a la derecha. ¿Sugerencias?

Actualización, este es el problema que tengo después de agregar flex:

ingrese la descripción de la imagen aquí

over 3 years ago · Santiago Trujillo
10 answers
Answer question

0

Puede tener la X en el título y display: flex ? Me gusta esto,

 <div mat-dialog-title class="flex-container"> <h1>Login</h1> <button mat-button class="close-icon" [mat-dialog-close]="true"> <mat-icon>close</mat-icon> </button> </div> <div mat-dialog-content> ... ... </div>

FlexBox al rescate,

 .flex-container { display: flex;}

Nota al margen: aún puede usar fxLayout en lugar de .flex-container

over 3 years ago · Santiago Trujillo Report

0

<button class="close" mat-button (click)="onNoClick()">X</button> <h1 mat-dialog-title>Login</h1> <div mat-dialog-content> ... ... </div>

CSS: (Indíquelo en global ( styles.css ) o proporcione ViewEncapsulation.NONE o, de lo contrario, estos estilos no afectarán).

 .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; }

Tenga en cuenta que en el CSS ahora tenemos una nueva clase de la nada .my-dialog

Entonces, mencione eso como panelClass en dialogRef como a continuación,

 this.dialog.open(DialogComponent, { width: '250px', panelClass: 'my-dialog', .. ..

Esto me da el siguiente resultado,

ingrese la descripción de la imagen aquí

over 3 years ago · Santiago Trujillo Report

0

Usando mat-icon-button es necesario agregar solo el estilo a continuación al botón.

 .close-button{ float: right; top:-24px; right:-24px; }

Ejemplo funcional:

apilar

over 3 years ago · Santiago Trujillo Report

0

En el archivo HTML de su componente, agregue el siguiente marcado en la parte superior de todos los elementos.

 <div mat-dialog-title style="float: right; font-weight: 700; cursor: pointer;" (click)="close()">X</div>

En su archivo TS de componente, agregue la función de cierre de la siguiente manera.

 close(): void { this.dialogRef.close(); }

No olvides incluir el dialogRef dentro del constructor como argumento.

 constructor(public dialogRef: MatDialogRef<YourDialogComponent>) {}
over 3 years ago · Santiago Trujillo Report

0

Posible duplicado: 49420069

Cerrar funcionalidad y alineación de botones sin TypeScript.

HTML:

 <button class="button-close" mat-button [mat-dialog-close]="true">X</button>

CSS:

 .button-close { justify-self: right; font-size: 20px; border: none; height: 30px; background-color: #FFFFFF; outline: none; color: #c04747; &:hover { cursor: pointer; } }
over 3 years ago · Santiago Trujillo Report

0

Lo que prefiero es hacer algo como esto:

archivo .html

 <button class="close" mat-button mat-dialog-title (click)="closeDialog()">X</button>

Al darle mat-dialog-title al botón, me aseguro de que esté en la capa superior y luego le doy una clase personalizada, algo así como

archivo .css

 .close.mat-button { position: inherit; top: 0; right: 0; padding: 2px; line-height: 3px; min-width: auto; }

El botón discutido anteriormente y mi contenido modal está en un div principal, que muestro como flex y uso como flex-direction: columna

 .dialog{ display: flex; flex-direction: column; }

archivo .ts

 closeDialog() { this.dialogRef.close(); }```
over 3 years ago · Santiago Trujillo Report

0

Puede lograr esto aplicando algunos estilos css a mat-icon, puede lograr esto.

Mat-diálogo se ve a continuación.

 <button mat-icon-button class="close-button" [mat-dialog-close]="true"> <mat-icon class="close-icon" color="warn">close</mat-icon> </button> <h1 mat-dialog-title>Hi {{data.name}}</h1> <div mat-dialog-content> <p>Hello World!</p> </div>

Agregue las siguientes reglas css

 // if you want to change the color of the icon .material-icons.color_white {color: #ffffff;} .close-button{ float: right; top:-24px; right:-24px; } //if you want some css animation .close-icon { transition: 1s ease-in-out; } .close-icon:hover { transform: rotate(180deg); } //To place the x mark outside of the container ::ng-deep .icon-outside .close-button{ float: right; top:-52px; right:-52px; } ::ng-deep .icon-outside .mat-dialog-container { overflow: unset }

Su componente de consumo de mat-dialog debería verse como se muestra a continuación

 constructor(public dialog: MatDialog) {} openDialog(): void { const dialogRef = this.dialog.open(DialogComponent, { width: '250px', panelClass:'icon-outside', data: {name: 'your name'} }); dialogRef.afterClosed().subscribe(result => { console.log('The dialog was closed'); }); }

Es importante agregar un icon-outside .

Esto cambiará su código como se esperaba. Si está buscando cambiar el color del ícono, agregue estas dos clases a mat-icon material-icons & color_white

Entonces su botón se verá como se muestra a continuación:

 <button mat-icon-button class="close-button icon-outside" [mat-dialog-close]="true"> <mat-icon class="close-icon material-icons color_white">close</mat-icon> </button>
over 3 years ago · Santiago Trujillo Report

0

En nuestro proyecto hice una implementación usando flex y css.

archivo .html

 <div fxLayout="column"> <div fxLayoutAlign="end"> <button mat-icon-button color="primary" (click)="close()"><mat-icon>close</mat-icon></button> </div> <mat-card class="pd-2"> ... </mat-card> </div>

archivo .ts

 openMinimumsModal( ) { const dialogRef = this.matDialog.open(OrderMinimumsComponent, { width: 'auto', panelClass: 'dialog-no-padding', data: { ... }, }); dialogRef.afterClosed().subscribe(() => {}); } close(): void { this.dialogRef.close(); }

archivo .css

 .dialog-no-padding .mat-dialog-container { padding: 0; } .pd-2 { padding: 0 20px 20px 20px !important; }
over 3 years ago · Santiago Trujillo Report

0

La manera fácil ahora es:

 <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>

Y el css del título del diálogo es

 .dialog-title { display: flex; justify-content: space-between; align-items: center; }

Eso está funcionando en Angular 8.0.0

over 3 years ago · Santiago Trujillo Report

0

Acabo de encontrarme con el mismo problema. Se me ocurrió una solución más fácil usando flotadores. Esto también alinea la X cercana con el título, lo que me parece más agradable a la vista.

archivo HTML:

 <div> <h1 mat-dialog-title style="float: left">Dialog Title</h1> <span style="float: right" [mat-dialog-close]>X</span> </div> <div mat-dialog-content style="clear: both"> ... </div>

Captura de pantalla

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error