Tengo un componente principal que abre un cuadro de diálogo angular-material2 Parent .
let dialogRef = this.dialog.open(Child, { disableClose: true }); cuadro de diálogo abierto Child componente secundario tiene un botón 'Agregar'. Quiero notificar al componente 'Padre' si el usuario hace clic en el botón 'Agregar'.
¿Cómo es esto posible?
EventEmitter para comunicarme con el contenedor principal
// dialog component ... onAdd = new EventEmitter(); onButtonClick() { this.onAdd.emit(); } ...y componente padre
// parent component ... let dialogRef = this.dialog.open(Component); const sub = dialogRef.componentInstance.onAdd.subscribe(() => { // do something }); dialogRef.afterClosed().subscribe(() => { // unsubscribe onAdd }); ...Aquí está la demostración
http://plnkr.co/edit/KbE3uQi2zMNaZlZEEG5Z
gracias a thomaspink
Su respuesta es correcta, pero esto ya se menciona en Angular2 Material Documentation de una manera simple, ya que puede subscribe al método afterClosed de dialog Reference (dialogRef como en el ejemplo) y obtendrá el valor de la opción seleccionada del argumento del método de subscribe (En nuestro resultado del caso).
let dialogRef = this.dialog.open(DialogResultExampleDialog); dialogRef.afterClosed().subscribe(result => { this.selectedOption = result; });Para obtener más detalles, puede visitar este enlace https://material.angular.io/components/component/dialog e ir a la pestaña Ejemplo e intentar comprender un ejemplo simple.
Con "@angular/material": "~7.0.0" componentInstance ya no existe en MatBottomSheetRef.
Ha sido reemplazado por instance
Implementación principal:
let dialogRef = this.dialog.open(Component); const sub = dialogRef.instance.onAdd.subscribe(() => { // do something });