Estoy tratando de crear un cuadro de confirmación genérico usando ngbmodal, que se usará en toda la aplicación. En el cual, el título y el mensaje se pasarán al modal desde el componente de llamada. Lo creé como DialogService y lo agregué en entryComponents. Ahora puedo mostrar el cuadro de confirmación. Pero no es capaz de obtener el resultado. A continuación se muestra el código para mostrar el componente ConfirmationBox. Cómo obtener el valor de él
const modalRef = this.modalService.open(ConfirmationBoxComponent,{backdrop:"static"}) modalRef.componentInstance.name = "Message"; modalRef.componentInstance.confirmationBoxTitle = "Confirmation?" modalRef.componentInstance.confirmationmessage = "Do you want to cancel?" modalRef.componentInstance.changeRef.markForCheck();Hay muchas maneras fáciles de lograr esto, pero sugeriría una que es la OMI más simple y efectiva: resuelva la promesa de result de modal con la elección del usuario. Esto es tan simple como hacer lo siguiente en el componente que representa el contenido de modal (observe activeModal.close(...) ):
<button (click)="activeModal.close(true)">Yes</button> <button (click)="activeModal.close(false)">No</button> Luego, puede recuperar la respuesta del usuario de la promesa de result de NgbModalRef (observe modalRef.result.then ):
open() { const modalRef = this.modalService.open(NgbdModalContent); modalRef.componentInstance.confirmationBoxTitle = 'Confirmation?'; modalRef.componentInstance.confirmationMessage = 'Do you want to cancel?'; modalRef.result.then((userResponse) => { console.log(`User's choice: ${userResponse}`) }); }Puede ver todo esto en acción en el siguiente plunker: http://plnkr.co/edit/yYIx1m1e2nfK0nxFwYLJ?p=preview