mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
3974c2184e
This change treats all views attached to `ApplicationRef` as `OnPush`, meaning that they have to be explicitly marked for check in order to be refreshed when a tick happens. This prevents "accidentally" refreshing views which have `Default` change detection as a side effect of running change detection from an unrelated notification. In addition, this change helps us achieve one of the big goals of the project: that we can provide a testing experience which gives developers more confidence that a component is zoneless-compatible. Because `ComponentFixture` change detection is run through `ApplicationRef` instead of `ChangeDetectorRef` when zoneless is enabled, this ensures that the component under test has correctly been marked for check in order to be updated. Without this, calling `ComponentFixture.detectChanges` would allow a test to _force_ change detection on a view when Angular would have otherwise not known that it needed to be updated. Calling `ComponentFixture.detectChanges` on a component which is not marked for check will now omit refreshing component view. PR Close #55099