Skip to content

feat(dialog): Support async MatDialogConfig.closePredicate #32142

@PowerKiKi

Description

@PowerKiKi

Feature Description

For a long time we wanted to be able to cancel dialog closure, in #14292. It was solved via a new option, closePredicate, in #14292. But that new option does not support async code. And so we cannot, for example, ask user for the confirmation to close the dialog (via a second dialog), nor do XHR to verify things on server-side.

This kind of use case was already mentioned by @teolag in #14292 (comment), but that specific part of the message was left unanswered. And @Nakira had to come up with a custom solution to solve this in #14292 (comment)

Use Case

I want the dialog closure to wait until I know whether it can be closed. Possibly via asking the user that he is OK to lose all the data he just input in the dialog, like so:

this.matDialog.open(MyDialogComponent, {
    closePredicate: async () => await askUserIfReallySure(),
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3An issue that is relevant to core functions, but does not impede progress. Important, but not urgentarea: material/dialogfeatureThis issue represents a new feature or feature request rather than a bug or bug fix

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions