symbol feature detection for the compiler (#54711)
18.0.0-next.0 (2024-03-14)
Breaking Changes
core
OnPush views at the root of the application need to
be marked dirty for their host bindings to refresh. Previously, the host
bindings were refreshed for all root views without respecting the
OnPush change detection strategy.
The ComponentFixtureautoDetect feature will no
longer refresh the component's host view when the component is OnPush
and not marked dirty. This exposes existing issues in components which
claim to be OnPush but do not correctly call markForCheck when they
need to be refreshed. If this change causes test failures, the easiest
fix is to change the component to ChangeDetectionStrategy.Default.
When Angular runs change detection, it will continue to
refresh any views attached to ApplicationRef that are still marked for
check after one round completes. In rare cases, this can result in infinite
loops when certain patterns continue to mark views for check using
ChangeDetectorRef.detectChanges. This will be surfaced as a runtime
error with the NG0103 code.
The ComponentFixture.autoDetect feature now executes
change detection for the fixture within ApplicationRef.tick. This more
closely matches the behavior of how a component would refresh in
production. The order of component refresh in tests may be slightly
affected as a result, especially when dealing with additional components
attached to the application, such as dialogs. Tests sensitive to this
type of change (such as screenshot tests) may need to be updated.
Concretely, this change means that the component will refresh before
additional views attached to ApplicationRef (i.e. dialog components).
Prior to this change, the fixture component would refresh after other
views attached to the application.
The exact timing of change detection execution when
using event or run coalescing with NgZone is now the first of either
setTimeout or requestAnimationFrame. Code which relies on this
timing (usually by accident) will need to be adjusted. If a callback
needs to execute after change detection, we recommend afterNextRender
instead of something like setTimeout.
Newly created and views marked for check and reattached
... (truncated)
Commits
2df8584 refactor(compiler-cli): speed up compiler tests by caching Angular (#54650)
400b739 test: add language-service tests for outputFromObservable() (#54650)
c687b8f feat(core): expose new output() API (#54650)
2564b45 test: replace fake_core with real @angular/core output (#54650)
b40f1e5 refactor(compiler): Remove deep imports in the language service (#54695)
df0e69b build: handle commonjs dependencies when bundling language service (#54429)
981c28c refactor(compiler-cli): do not emit signal unwrap calls in versions older tha...
0b955b8 test(language-service): add tests for model inputs (#54387)
153fc61 build: reuse fake core in type checking tests (#54344)
02fdd8d test: add tests to verify language-service supports output() function (#54217)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps @angular/language-service from 16.2.12 to 17.3.1.
Release notes
Sourced from
@angular/language-service
's releases.... (truncated)
Changelog
Sourced from
@angular/language-service
's changelog.... (truncated)
Commits
2df8584
refactor(compiler-cli): speed up compiler tests by caching Angular (#54650)400b739
test: add language-service tests foroutputFromObservable()
(#54650)c687b8f
feat(core): expose newoutput()
API (#54650)2564b45
test: replacefake_core
with real@angular/core
output (#54650)b40f1e5
refactor(compiler): Remove deep imports in the language service (#54695)df0e69b
build: handle commonjs dependencies when bundling language service (#54429)981c28c
refactor(compiler-cli): do not emit signal unwrap calls in versions older tha...0b955b8
test(language-service): add tests for model inputs (#54387)153fc61
build: reuse fake core in type checking tests (#54344)02fdd8d
test: add tests to verify language-service supportsoutput()
function (#54217)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show