fix(material/dialog): autofocus should wait for rendering to complete #28330
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current implementation of the dialog's
finishDialogOpen
, which includes autofocus, only waits for a microtask before executing. This only works in the tests because of the synchronous call todetectChanges
after opening the dialog, ensuring that change detection runs before the microtask. In an application, this is not guaranteed becauseNgZone
will only run change detection when the microtask queue empties, which includes the microtask created by the dialog container.This commit updates the implementation to wait for the next render to coplete, then queues a microtask that will finish the open process and perform autofocus.