web-dev-qa-db-fra.com

Boîte de dialogue de matériau Angular2 à fermeture automatique

J'ai utilisé le matériau angular2 MdDialog pour montrer un formulaire.

Lorsque l'utilisateur soumet le formulaire, une demande est envoyée au backend et si la demande aboutit, je dois fermer la boîte de dialogue. Si la demande d'arrière-plan a échoué, je dois garder la boîte de dialogue ouverte.

Je peux fermer la boîte de dialogue en utilisant un bouton comme ci-dessous.

<button md-raised-button md-dialog-close>Cancel</button>

Mais, dans ce cas, je n'ai besoin de fermer la boîte de dialogue que si la demande principale est réussie, j'ai donc besoin d'un moyen de fermer la boîte de dialogue par programme.

Le composant qui est affiché à l'intérieur de la boîte de dialogue n'a pas la référence de boîte de dialogue, et je ne connais pas d'autre moyen de fermer automatiquement la boîte de dialogue à partir du composant.

Existe-t-il un moyen de fermer la boîte de dialogue à partir du composant à l'intérieur de la boîte de dialogue?

23
Lahiru Chandima

Si vous souhaitez le fermer à partir de la boîte de dialogue:

constructor(private dialogRef:MatDialogRef<MyDialogComponent>){ }

closeDialog(){
  this.dialogRef.close();
}

Si vous souhaitez le fermer à partir du parent de la boîte de dialogue:

constructor(private matDialog: MatDialog){}

//anywhere
let dialogRef = this.matDialog.open(MyDialogComponent);
dialogRef.close();
45
Ploppy