mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
The `afterRender` hooks currently run after `ApplicationRef.tick` but also run after any call to `ChangeDetectorRef.detectChanges`. This is problematic because code which uses `afterRender` cannot expect the component it's registered from to be rendered when the callback executes. If there is a call to `ChangeDetectorRef.detectChanges` before the global change detection, that will cause the hooks to run earlier than expected. This behavior is somewhat of a blocker for the zoneless project. There is plenty of application code that do things like `setTimeout(() => doSomethingThatExpectsComponentToBeRendered())`, `NgZone.onStable(() => ...)` or `ApplicationRef.onStable...`. `ApplicationRef.onStable` is a should likely work similarly, but all of these are really wanting an API that is `afterRender` with the requirement that the hook runs after the global render, not an individual CDRef instance. This change updates the `afterRender` hooks to only run when `ApplicationRef.tick` happens. fixes #52429 fixes #53232 PR Close #52455 |
||
|---|---|---|
| .. | ||
| async.ts | ||
| component_fixture.ts | ||
| defer.ts | ||
| fake_async.ts | ||
| logger.ts | ||
| metadata_override.ts | ||
| metadata_overrider.ts | ||
| resolvers.ts | ||
| styling.ts | ||
| test_bed.ts | ||
| test_bed_common.ts | ||
| test_bed_compiler.ts | ||
| test_hooks.ts | ||
| testing.ts | ||
| testing_internal.ts | ||