[(clrModalOpen)]="opened"
is just syntactic sugar for
[clrModalOpen]="opened" (clrModalOpenChange)="opened = $event"
(see https://angular.io/guide/template-syntax#two-way-binding--- for more information).
So in your case, the event handler is (clrModalOpenChange)
.
Also note that in Angular, outputs are not fired when the change comes from the corresponding input in a two-way binding, because it would lead to a loop. Which means if your own Close button updates the modal through the input, the output will not be fired. The solution is simply to make sure that your handler is called both from our output and from your own method to close the modal if there is one.
Because I was asked for a live example, here are two of them:
- Elegant solution with getter and setter, keeps the two-way binding syntax: https://plnkr.co/edit/7J8MfH?p=preview
- Explicit listener with de-sugared version: https://plnkr.co/edit/6cWHwu?p=preview
I do have a preference for the first one because on such simple getters and setters, there are no performance risks. But I figured since I mentioned the de-sugared syntax, I might as well show an example.