18.0.0-next.2 (2024-03-28)
compiler
Commit | Description |
---|---|
capture all control flow branches for content projection in if blocks (#54921) | |
capture switch block cases for content projection (#54921) | |
declare for loop aliases in addition to new name (#54942) | |
invoke method-based tracking function with context (#54960) | |
throw error if item name and context variables conflict (#55045) |
compiler-cli
Commit | Description |
---|---|
add partial compilation support for deferred blocks (#54908) | |
drop support for TypeScript older than 5.4 (#54961) | |
add diagnostic if initializer API is used outside of an initializer (#54993) | |
report cases where initializer APIs are used in a non-directive class (#54993) | |
report errors when initializer APIs are used on private fields (#54981) |
core
Commit | Description |
---|---|
add support for fallback content in ng-content (#54854) | |
ComponentFixture stability should match ApplicationRef (#54949)
| |
account for re-projected ng-content elements with fallback content (#54854) | |
correctly project single-root content inside control flow (#54921) | |
establish proper injector resolution order for @defer blocks (#55079)
| |
Fix clearing of pending task in zoneless cleanup implementation (#55074) |
http
Commit | Description |
---|---|
include transferCache when cloning HttpRequest (#54939) | |
manage different body types for caching POST requests (#54980) |
language-service
Commit | Description |
---|---|
allow external projects to use provided compiler options (#55035) | |
prevent underlying TS Service from handling template files (#55003) |
migrations
Commit | Description |
---|---|
account for variables in imports initializer (#55081) |
router
Commit | Description |
---|---|
preserve replaceUrl when returning a urlTree from CanActivate (#54042) | |
RouterLinkActive will always remove active classes when links are not active (#54982) |
Breaking Changes
compiler-cli
-
- Angular no longer supports TypeScript versions older than 5.4.
core
-
ComponentFixture.whenStable
now matches the
ApplicationRef.isStable
observable. Prior to this change, stability
of the fixture did not include everything that was considered in
ApplicationRef
.whenStable
of the fixture will now include unfinished
router navigations and unfinishedHttpClient
requests. This will cause
tests thatawait
thewhenStable
promise to time out when there are
incomplete requests. To fix this, remove thewhenStable
,
instead wait for another condition, or ensureHttpTestingController
mocks responses for all requests. Try addingHttpTestingController.verify()
before yourawait fixture.whenStable
to identify the open requests.
Also, make sure your tests wait for the stability promise. We found many
examples of tests that did not, meaning the expectations did not execute
within the test body.In addition,
ComponentFixture.isStable
would synchronously switch to
true in some scenarios but will now always be asynchronous.
router
- When a a guard returns a
UrlTree
as a redirect, the
redirecting navigation will now usereplaceUrl
if the initial
navigation was also using thereplaceUrl
option. If this is not
desirable, the redirect can configure newNavigationBehaviorOptions
by
returning aRedirectCommand
with the desired options instead ofUrlTree
.