Angular2 Confirmation Dialog component
Recently, I have been working on Angular2 quite a lot. We had a requirement to come up with a reusable confirmation dialog component. Below is the quick implementation I came up with. I will
soon wrap it into a npm module. Any feedbacks?
confirmation-dialog.component.ts
import { Component , OnInit } from ' @angular/core ' ;
import { MdDialogRef } from ' @angular/material ' ;
@ Component ({
selector : ' app-confirmation-dialog ' ,
templateUrl : ' ./confirmation-dialog.component.html ' ,
styleUrls : [ ' ./confirmation-dialog.component.scss ' ]
})
export class ConfirmationDialogComponent implements OnInit {
public title : string ;
public message : string ;
public titleAlign ?: string ;
public messageAlign ?: string ;
public btnOkText ?: string ;
public btnCancelText ?: string ;
constructor ( public dialogRef : MdDialogRef < ConfirmationDialogComponent > ) { }
ngOnInit () {
}
}
confirmation-dialog.service.ts
import { Observable } from ' rxjs/Rx ' ;
import { ConfirmationDialogComponent } from ' ./confirmation-dialog.component ' ;
import { MdDialogRef , MdDialog , MdDialogConfig } from ' @angular/material ' ;
import { Injectable , ViewContainerRef } from ' @angular/core ' ;
@ Injectable ()
export class ConfirmationDialogsService {
constructor ( private dialog : MdDialog ) { }
public confirm ( title : string , message : string , viewContainerRef : ViewContainerRef , btnOkText : string = ' Ok ' , btnCancelText : string = ' Cancel ' ): Observable < boolean > {
let dialogRef : MdDialogRef < ConfirmationDialogComponent > ;
let config = new MdDialogConfig ();
config . viewContainerRef = viewContainerRef ;
dialogRef = this . dialog . open ( ConfirmationDialogComponent , config );
dialogRef . componentInstance . title = title ;
dialogRef . componentInstance . message = message ;
dialogRef . componentInstance . btnOkText = btnOkText ;
dialogRef . componentInstance . btnCancelText = btnCancelText ;
return dialogRef . afterClosed ();
}
public confirmWithoutContainer ( title : string , message : string , titleAlign : string = ' center ' , messageAlign : string = ' center ' , btnOkText : string = ' Ok ' , btnCancelText : string = ' Cancel ' ): Observable < boolean > {
let dialogRef : MdDialogRef < ConfirmationDialogComponent > ;
let config = new MdDialogConfig ();
// config.viewContainerRef = viewContainerRef;
dialogRef = this . dialog . open ( ConfirmationDialogComponent , config );
dialogRef . componentInstance . title = title ;
dialogRef . componentInstance . message = message ;
dialogRef . componentInstance . titleAlign = titleAlign ;
dialogRef . componentInstance . messageAlign = messageAlign ;
dialogRef . componentInstance . btnOkText = btnOkText ;
dialogRef . componentInstance . btnCancelText = btnCancelText ;
return dialogRef . afterClosed ();
}
}
confirmation-dialog.component.html
<div class= "box-holder" >
<div class= "header-row" [ngClass]= "{'text-center-align': titleAlign=='center', 'text-right-align': titleAlign=='right' }" fxLayoutAlign= "space-between center" >
<div class= "header-title " >
</div>
</div>
<div class= "content-holder" [ngClass]= "{'text-center-align': messageAlign=='center', 'text-right-align': messageAlign=='right' }" fxLayoutAlign= "start start" >
</div>
<div class= "action-container" fxLayoutAlign= "end end" >
<button type= "button" md-button class= "od-button od-ripple action-button" (click)= "dialogRef.close()" ></button>
<button type= "button" md-raised-button class= "od-button od-ripple action-button" (click)= "dialogRef.close(true)" > </button>
</div>
</div>